Greasy Fork is available in English.

Mouseover Popup Image Viewer

Shows images and videos behind links and thumbnails.

tophf e wOxxOm
Installazioni giornaliere
Installazioni totali
113 2 3
Creato il
Aggiornato il
Non disponibile
Applica a
Tutti i siti

A fork of MPIV (Mouseover Popup Image Viewer).
Developed on

Requires a modern browser

  • Chrome or Chromium-based 55+
  • FF 52+ for the main features
  • FF 63+ for the config dialog as it's built with ShadowDOM


Activatemove mouse cursor over thumbnail
Deactivatemove cursor off thumbnail, or click, or zoom out fully
Prevent/freezehold down Shift while entering/leaving thumbnail
(for small pics)
hold Ctrl while entering image element
Start zooming configurable: automatic or via right-click / Shift while popup is visible
Zoommouse wheel
RotateL r keys (left or right)
Flip/mirrorh v keys (horizontally or vertically)
in album
mouse wheel, j k or keys
Night mode toggleN key
Downloadd key while popup is visible
Mute/unmutem key while popup is visible
Open in tabt key while popup is visible
Configureuserscript manager toolbar icon -> User Script Commands -> `MPIV: configure`

Major changes to the original MPIV:

  • Most rules were updated/enhanced, some added, some dead hostings removed.
  • ShadowDOM support added for sites built with Web Components e.g. Polymer.
  • Ancient browsers aren't supported anymore because the code is using the modern JS syntax.


Click MPIV: Configure in your userscript manager popup menu. Screenshot is shown below.

Minor/technical changes to the original MPIV:

  • Advanced "e" syntax for sites that show a small overlay when hovering thumbnails (usually transparent or semi-transparent) thus effectively hiding the thumbnails from MPIV. Now you can specify "e": {".parent": ".image"} where .parent selector should match the closest parent element that contains both the overlay and the actual image, which MPIV will find using the .image selector applied relatively to that parent element. To refer to that parent, use :scope like this: {".parent": .":scope > img:first-child"}. To specify multiple parent-image relations: "e": {".parent1": ".image1", ".parent2": ".image2"}.

  • New rule property "u" (a single string or an array of strings) that performs a very fast plain-string check. Only when it succeeds, the slow regexp "r" is checked. Special symbols may be specified in "u" property to increase the reliability of matching: ||, |, ^ - same syntax as in AdBlock filters, see the source code of the script for usage examples.

    • ||, here || means "domain or subdomain" so the pattern matches domains like or and doesn't match unrelated domains partially like for example
    • |foo matches things that start with foo (the entire URL is checked so that means http at least, usually)
    • ^ is a URL part separator (like / or ? or :) but not a letter/number, neither any of %._-. Additionally, when used at the end like foo^ it also matches when the source ends with foo
  • New rule property "anonymous": true to make the requests for this rule anonymously (i.e. without sending cookies).

  • The internal status updates are not exposed by default on the <html> node because doing so slows down complex sites due to recalculation of the entire page layout. Instead only the hovered node (as reported by the matching rule) receives status updates on its mpiv-status attribute (it's not the class nor data- attribute to avoid confusing sites with unknown stuff being present in these standard places). If you were using the global status feature to customize CSS of those statuses, you'll need to enable it manually in the MPIV's config dialog.

See the MPIV Wiki for more info on writing rules in general and this comment for gallery rules in particular.