Skip to content

Features

Features

Hover Translate is designed around short reading interruptions: pick a block, read the translation, and keep moving. The extension keeps the interface narrow and relies on DeepL Free for the translation step.

Two translation modes

Hover Translate offers two modes that you can switch at any time from the popup.

Hover mode

In Hover mode, moving the cursor over a paragraph triggers a translation automatically after a short delay.

  • Hover any supported block element (paragraph, list item, heading, table cell, etc.).
  • After a 300 ms debounce, the extension checks that the cursor is actually over text (ignoring padding and images).
  • The translation appears in a floating tooltip anchored to the block.
  • Leaving the block hides the tooltip.
Popup with Hover mode selected

Selection mode

In Selection mode, nothing happens until you select text. This is useful for pages where paragraphs are long or where you only want a specific phrase translated.

Selection mode has two triggers:

  • Shortcut: press Alt+Shift+T while text is selected. The extension translates only the selection.
  • Auto: as soon as you release the mouse and a selection exists, the extension translates it automatically after 300 ms.

Clearing the selection dismisses the tooltip.

Popup with Selection mode and Shortcut trigger selected

Automatic language detection

Hover Translate decides the translation direction from the text itself, in both modes.

  • If the text contains Japanese characters (hiragana, katakana, or kanji), the extension sends it as JA and requests English output.
  • If the text does not contain Japanese characters, the extension assumes English input and requests Japanese output.
  • You do not need to toggle the source language manually.

Block-level detection (Hover mode)

In Hover mode the extension looks for the nearest paragraph-like ancestor of the element under the cursor.

  • Native targets include p, li, h1 to h6, td, th, blockquote, figcaption, dd, and dt.
  • Modern documentation sites that do not use native <p> elements are also supported, including Mintlify ([data-as="p"]), Twitter/X tweet text, and Notion public pages.
  • For pages that do not match any known selector, the extension falls back to the nearest block-level ancestor that carries a reasonable amount of text.
  • A 300 ms hover delay reduces accidental requests when the cursor simply passes over the page, and the hover is skipped entirely if the cursor sits on padding or a non-text area.

In-page tooltip

Translations appear in a floating tooltip positioned close to the source text.

  • In Hover mode the tooltip anchors to the hovered block, recomputing its position on each show so it stays aligned even if the page scrolls during the request.
  • In Selection mode the tooltip anchors to the bounding rectangle of the selection range.
  • The tooltip uses position: fixed and its placement flips vertically when near the edge of the viewport.
  • A copy button in the top-right corner copies the current translation to the clipboard; a checkmark confirms the action for about a second. The button is hidden while a translation is loading and on error states.
  • Error tooltips are visually separated with a red left border and show the mapped error message.

LRU translation cache

Hover Translate avoids re-translating identical blocks during the same service worker session.

  • The background service worker keeps a 100-entry least-recently-used cache.
  • Repeated translations of the same text are served from cache.
  • This reduces request volume and helps preserve the monthly DeepL Free quota.
  • The cache is best-effort. When the service worker restarts, the in-memory cache is cleared.

Keyboard shortcut

The default shortcut is Alt+Shift+T, dedicated to Selection mode.

  • In Selection + Shortcut mode, the shortcut translates the current selection on demand.
  • In Hover or Selection + Auto mode, the shortcut does nothing — these modes do not need a manual trigger.
  • Change the key combination from the Change link in the popup, which opens chrome://extensions/shortcuts.

Quota display

The popup includes a dedicated quota section for DeepL usage.

  • Each time you open the popup, the extension requests current usage from DeepL’s /v2/usage endpoint (results are cached for 30 seconds to avoid redundant requests).
  • The result is shown as a progress bar.
  • Above 80%, the bar changes to an amber warning state.
  • Above 95%, it changes again to a red danger state.
  • Use Refresh to fetch the latest usage without closing the popup.
  • The DeepL Free quota resets automatically each month — no payment required.
Popup showing normal quota state at 38 percentPopup showing danger quota state at 97 percent

Max character guardrail

Very large blocks are stopped before they reach the translation API.

  • The default limit is 1500 characters.
  • You can change the limit anywhere from 500 to 5000 characters in Settings.
  • When a block or selection exceeds the current limit, the content script skips the request and shows a Text too long message instead.
  • Lowering the limit can save quota on pages with very large paragraphs or tables.