☰

Manga Viewer MM

Shows all chapter pages at once in a single scrolling reader on 100+ manga, manhwa, comic and adult sites (MangaDex, Asura, Batoto, MangaPark, WebToons, Madara/MangaStream sites and more). Zoom, 7 view modes, hotkeys, bookmarks, auto-scroll, lazy loading, ZIP download, local files.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

Аўтар
MankaMukaido
Усталяванняў за дзень
2
Усяго ўсталяванняў
2
Рэйтынг
0 0 0
Версія
1.0.1
Створаны
09.10.2026
Абноўлены
09.10.2026
Памер
713.6 КБ
Ліцэнзія
MIT
Ужываецца на

Manga Viewer MM: Description

Source: Manga_Viewer_MM_user.js (16,642 lines, ~724 KB). Line numbers refer to this file. Coverage: metadata, architecture, settings, keyboard and action tables, startup flow, console helpers, and a sample of site modules (Asura, MangaDex, ExHentai, Local Files, Madara and MangaStream groups). Not all 89 site modules were read line by line.


1. What it is

A Tampermonkey/Violentmonkey userscript (MIT license, version 2026.10.09.adult1). It replaces a supported site's chapter page with its own reader that shows all pages in one scrolling view.

  • Matches about 110 named sites through 89 @include regexes.
  • Covers manga, comic and adult-content sites (the adult sites are tagged Category.HENTAI).
  • Single IIFE, no external libraries. It includes its own hotkeys engine and its own ZIP/DEFLATE code.

2. Metadata

  • Runs: document-end, with @noframes.
  • Grants: unsafeWindow, GM_getValue, GM_setValue, GM_listValues, GM_deleteValue, GM_xmlhttpRequest, GM_addValueChangeListener.
  • @connect *: cross-origin requests to any domain are allowed.
  • Broad includes: generic patterns such as .../(manga|series|manhua|comic|ch|novel|webtoon|tmo)/.+/.+, *(scans?|comic|realm|...)*/.+ and /read/.+ match many unrelated sites. A module's run() decides whether the page is really a chapter.

3. Architecture (24 numbered sections, each uses only those above it)

§ Content
01-04 Config constants, 3-level logging with error history, pure helpers, wait/timeout utilities
05-06 Userscript-manager storage wrappers, device detection, page reading and fetch helpers (fetchJson, fetchDocument, timeouts)
07 UI strings in 6 languages (en_US is the fallback)
08-09 Settings store (saves only the diff from defaults, cross-tab sync, bookmarks) and runtime state
10-12 Color math and themes, CSS, HTML template functions
13-14 Popups and toasts; table mapping each setting to the function that applies it
15 Image loading
16-18 Actions table, keyboard engine and keybinding editor, delegated events
19 ZIP tools and chapter download
20 Toasts, bookmarks, auto-scroll, comments, local file reader
21 Startup
22-23 Site helpers and site modules
24 Console helpers and entry point

4. Startup flow (§21)

  1. Find site modules whose url regex matches the address.
  2. Run each module's waits (with timeouts), then site.run().
  3. Validate the returned object. A bad result counts as a failure.
  4. The first successful module wins; all failures are logged.
  5. Prepare the page: title, bookmark resume, optional before() hook, load mode.
  6. Open the viewer: capture comments, take over the page, draw the reader, load images.

Page takeover (takeOverPage, line 11318) clones the document root and replaces it, which drops every event listener the original site attached. It then writes the reader's own head and body.

Site module contract: an object with name, url, homepage, language, category, optional waitEle and obs (warning note), testUrls, and run(). run() returns title, series, pages, prev, next, and one image-loading strategy.

5. Image loading (§15)

Pages are shown as plain <img src>: no CORS handling needed, each image requested once. A queue limits concurrency and spacing.

Strategies

  • images: direct URLs.
  • pages: fetch each page's HTML and read the image URL from it.
  • bruteForce: the site module drives loading itself.

Load speed presets (concurrency / delay)

Preset Concurrency Delay
Safe (default) 5 1000 ms
Standard 5 500 ms
Faster 10 500 ms
Extreme 10 250 ms
All 20 50 ms

Lazy loading: rules are distance (within 2000 px), lookAhead (next 5 pages) or both. Per the code comments, bruteForce sites are never lazy. Any page can be loaded on demand and jumps to the front of the queue. Retry delay is 2 s and image timeout is 60 s.

6. Reader features

  • View modes (7): WebComic (default), Vertical, FluidLTR, FluidRTL, Book, Manga, Gallery.
  • Zoom: global (percent, fit width, fit height) and per page. Settings: min zoom, zoom step, "fit width if oversize".
  • Per-page actions: bookmark, zoom in/out/restore/width/height, double-page toggle, hide page.
  • Navigation: next/previous chapter, back to series, go-to-page select, page range chooser (two-handle slider), thumbnail navbar (bottom by default), pagination, header modes.
  • Auto-scroll: continuous, with speed up/down; pauses on wheel/touch and resumes after 500 ms.
  • Bookmarks: stored with page and URL, resume prompt, auto-removed when the last page is reached.
  • Comments: captures Disqus/Facebook sections before takeover and shows them in a panel (enableComments, default on).
  • Theming: dark/light scheme; theme color default #29487D (global) and #004526 (per-site).
  • Device modes: auto, desktop, tablet, mobile. Mobile overrides enable lazy loading, hide the navbar and hide page controls.
  • Settings scope: global or per-site (keyed by hostname). locale, bookmarks and keybinds are always global. Old 2025 keys are migrated once.

7. Default hotkeys

Own engine; ignored while typing in inputs. All bindings are editable in a panel with validation, and modifier combos (ctrl+x, etc.) are supported.

Action Keys
Scroll up / down ↑ W Num8 / ↓ S Num2
Next chapter → / D Num6
Previous chapter ← ; A Num4
Zoom in / out = Num+ E / - Num- Q
Restore zoom 9 R
Fit width / height 0 Num* F / H Num0
Settings Num/ Num5 X
Return to chapter list Backspace Del NumDecimal
Toggle controls L
View modes C WebComic, V Vertical, N Left, B Right, G Gallery
Auto-scroll Space start, . faster, , slower

8. Chapter download and local files (§19-20)

  • Download: builds a ZIP (STORE method, CRC-32, no ZIP64, no encryption) and saves it via <a download>. Skipped pages are reported and a partial download can be offered. Bytes come through fetch (blob: URLs and same-origin fallback) or GM_xmlhttpRequest. downloadZip defaults to false.
  • Local files: on a file:///...index.html page, or via MVMOpenFiles(), you can open loose images, a folder, or a ZIP/CBZ archive. Includes a DEFLATE decoder and natural-sort comparator. Applies loadSpeed: All and disables lazy loading in this mode.

9. Console helpers (§24)

Command Purpose
MVMDiagnose() Tests every matching module without opening the reader
MVMDebug(true/false) Toggles verbose logging (persisted)
MVMSettings() Prints effective, global and local settings
MVMErrors() Prints the last errors with context
MVMSiteData() Prints data captured by some site modules
MVMOpenFiles() Opens the local files panel
MVM(begin, end) Opens the reader now for a page range

Setting window.__MVM_TEST_MODE__ = true before load exposes __MVM_INTERNALS__ instead of starting.

10. Site-module patterns observed

  • Asura: parses the Astro island props JSON.
  • MangaDex: calls api.mangadex.org/at-home/server/<id> and builds image URLs from the response.
  • ExHentai / e-Hentai: fetches gallery index pages in parallel; carries the note "May get your IP Banned, use with moderation."
  • Madara WP (19 brand names) and MangaStream WP (18 brand names): generic theme modules.
  • FoOlSlide: generic module for FoOlSlide installs.
  • Local Files: test/placeholder module; declines unless the document title is "MangaViewerMM Script".
  • Counts in file: 98 listImages:, 8 listPages:, 12 bruteForce mentions.

11. Security and privacy observations

  • No eval: no eval( or new Function found.
  • No hardcoded endpoints: outside the site modules (lines 105-12212), the only external URL is the metadata icon (cdn-icons-png.flaticon.com). URLs inside the 89 site modules were not fully audited.
  • Network scope: @connect * with GM_xmlhttpRequest allows any domain. Observed uses: site APIs, page fetches, image downloads.
  • Data stored: settings and bookmarks via the userscript manager's storage.
  • Broad regexes: generic includes may trigger on unrelated pages; a failed run() means the script does nothing there.
  • Page takeover: replaces the whole DOM and removes the site's listeners, so ads, login widgets and site navigation disappear.

12. Not verified

The script was not executed and no target site was tested. Some site modules may be outdated, since sites change often.