Pornhub Pro-ish

Adds a menu with to apply filters, add sorting, player tweaks like hiding the cursor and auto-mute, and site-wide quality-of-life improvements like automatic age verification and always default to the english version of the site. Beta download button added! Actively maintained and used by me so updated regularly. Feel free to request features!

To są wersje tego skryptu, gdzie kod został zaktualizowany. Pokaż wszystkie wersje.

  • v6.9.5 14-04-2026

    Rewrote the menu
    added an extra filter method
    made the sections collapasable for easier use
    improved the saving of the settings
    and added a sort by views method
    fixed dragging of the menu button on mobile

  • v6.9.0 09-04-2026

    Beta Download button added, squashed some bugs, and made the filter look better!

  • v6.8.1 07-04-2026

    Removed an old non functioning menu toggle and changed the description to better reflect functionality

  • v6.8.0 07-04-2026

    Improved the filtering, the menu button is now draggable if it's in the way

  • v6.7.0 07-04-2026

    I lost track of my changelog and uploaded the wrong file as version 6.6.1, so here's the update to 6.7.0 without a decent changelog, apologies.

    I changed the auto confirm age and language method to use cookies, they work almost perfectly across browsers and devices now.

  • v6.6.1 03-04-2026

    Changelog

    • Fixed auto age confirmation, uses cookies now
    • Made the menu floating
    • Added some mobile friendly changes
  • v6.6.0 26-03-2026

    Changelog

    v6.6.0

    Added auto skip of the age verification modal

  • v6.5.0 26-02-2026

    v6.5.0 — What's New

    Menu — Redesigned


    The side menu no longer takes up a fixed strip of the screen. It's now a compact floating panel that opens and closes on demand — click ☰ Menu to toggle it. The panel auto-closes when you click outside it or move your mouse more than 120 px away, keeping it out of your way while browsing.

    New toggle — Opaque menu button


    The ☰ Menu button can now be set to 50% opacity so it's less distracting while you watch. Enable Opaque menu button in the General section of the menu. The button always returns to full opacity on hover.

    Menu visibility — Simplified


    Previously the menu had a persistent Show / Hide Menu toggle that was saved to localStorage. The panel is now always hidden on load and opened on demand — no saved visibility state needed. The toggle button label is now a consistent ☰ Menu.

    DOM attachment — Fixed


    The menu and toggle button are now appended to document.documentElement instead of document.body. This prevents the menu from being displaced or hidden on pages where scripts manipulate the body before the DOM is ready.

    Tab-sync — Streamlined


    On tab visibility change (switching back to the tab), the script no longer attempts to re-sync menu visibility — since the panel is transient, this is no longer needed. Feature re-initialization and toggle-state sync still happen as before.

  • v6.3.0 25-02-2026

    6.3.0 - Changelog


    New Features

    • Hide VR Videos — new toggle in the Filtering category to hide VR content (detected via span.vr-thumbnail)
    • Hide Shorts Section — new toggle to hide the entire #shortiesListSection container

    AutoScroller Improvements

    • Duplicate detection: incoming li items checked against existing video IDs before insertion
    • Pre-existing duplicate cleanup on already-present li[data-video-id] elements
    • Stops after 3 consecutive empty pages (configurable: AUTOSCROLL_MAX_CONSECUTIVE_EMPTY)
    • Smoother scroll using scrollIntoView() on first new item
    • Cleaner state: _playlistPage & _fetchedPages now proper private fields

    Observer / Mutation Handling Improvements

    • Observer now scoped to ul.videos containers (much less noise)
    • Fallback to document.body only when needed
    • Tracks observed targets in a Set, auto re-scopes on new containers
    • Incremental hiding: only processes newly added nodes
    • li count diffing replaces old height/count heuristics

    Code Quality & Architecture

    • Unified handleError(context, error, level) error handler
    • Consistent private field naming (_field)
    • EventEmitter → internal Map + removeAllListeners()
    • StateManager cleanup: extracted private methods
    • VideoPlayer: hasMuted_hasMuted, added resetMuteState()
    • MenuManager features built once in constructor
    • Filter input: enforces maxlength + clamps value
    • Filter sanitizer: splits on commas only
    • PlaylistManager no longer depends on EventEmitter
    • Removed window.PornhubProApp global
    • Removed #cmtContent from hide list

    Config Changes

    • Renamed: CURSOR_HIDE_DELAY_MSCURSOR_HIDE_DELAY_S
    • Added:
      • AUTOSCROLL_MIN_DELAY_MS
      • AUTOSCROLL_MAX_DELAY_MS
      • AUTOSCROLL_MAX_CONSECUTIVE_EMPTY
      • OBSERVER_THROTTLE_MS
      • FEATURE_INIT_DELAY_MS
      • ELEMENT_HIDE_LOAD_DELAY_MS
      • FILTER_WORDS_MAX_LENGTH
    • Removed:
      • AUTOSCROLL_CHECK_INTERVAL_MS
      • AUTOSCROLL_TIMEOUT_MS
      • SCROLL_STEP_DELAY_MS
      • SCROLL_WAIT_MS


    Released February 2026

  • v6.2.0 25-02-2026

    AutoScroller — Complete Rewrite
    The autoscroll mechanism was fundamentally redesigned. The old version used a basic scroll-to-bottom + page-up loop with a simple interval-based timeout checker. The new version replaces this entirely with a fetch-based playlist loader that directly requests chunked playlist pages from the server API (/playlist/viewChunked), inserting the returned HTML into the DOM rather than simulating scroll input. Key improvements:

    Tracks which pages have already been fetched via a Set to avoid duplicate requests
    Automatically stops when a page returns no new items, rather than relying on a stale page-height timeout
    Adds randomized delays between fetches (800–2500ms) to reduce the risk of rate limiting
    Removed the old startUpdateChecker interval and performPageUps logic entirely, simplifying the class considerably


    VideoPlayer — Mute Idempotency
    Added a static hasMuted flag to VideoPlayer to prevent the mute action from firing redundantly on repeated calls. The mute() method now accepts a force parameter to override this guard when needed (e.g. when the toggle is explicitly clicked). The flag is reset to false on tab visibility loss (visibilitychange), so muting re-applies correctly when the user returns to the tab.

    Observer Lifecycle — Autoscroll Awareness
    The DOM mutation observer is now paused when autoscroll starts and resumed when it stops. Previously, the observer continued running during autoscroll, causing sort/hide features to fire repeatedly as new content was injected. This eliminates unnecessary processing during autoscroll and ensures a clean sort/hide pass runs once after autoscroll completes.

    Mute Toggle Handler — State-Aware
    The "Mute by default" feature toggle handler now checks whether the toggle was turned on before attempting to mute, and resets hasMuted before calling mute(true) — ensuring the action only fires when enabling the feature, not when disabling it.

  • v6.1.3 04-11-2025

    Small bugfixes regarding autoscroll

  • v6.1.2 08-10-2025

    Updated the mute button selector

  • v6.1.1 07-09-2025

    Changed some minor faults in the naming

  • v6.1.0 04-09-2025

    Completely rewrote the observer logic, so it uses WAY less memory

  • v6.0.0 04-09-2025
  • v6.0.0 04-09-2025
  • v5.1.0 04-09-2025
  • v5.1.0 04-09-2025

    Added a function to autoscroll through a page for playlists etc.
    Has a known bug when hiding a lot of videos, the expanding of the playlist won't always trigger correctly when not enough items are shown.

  • v5.0.1 03-09-2025

    Fixed the sorting within playlists! New version coming soon. I am reading the feedback and I'm trying to improve upon it as much as I can.

  • v5.0.0 19-07-2025
  • v3.5.7 19-09-2024
  • v3.5.6 12-09-2024

    attempted to fix a bug where all videos would hide instead of only the watched ones

  • v3.5.5 11-09-2024

    added class for mobile playlist sorting

  • v3.5.4 08-09-2024

    Added a fix for the buttons not working in playlists, will do an overhaul for 3.6.0

  • v3.5.3 08-09-2024

    Fixed a bug where sometimes none of the filters would work if the custom filter inpt was empty. Also rearranged some toggles

  • v3.5.3 08-09-2024

    Fixed a little bug where sometimes none of the filter would work if the text input was empty

  • v3.5.2 04-09-2024

    Small fix for sorting on mobile, PH updated the classes this script takes advantage off

  • v3.5.1 01-09-2024

    Updated the function that hides elements to include the huge empty space underneath pages with page numbering when searching for videos

  • v3.5.0 30-08-2024
  • v3.5.0 25-08-2024

    Added dynamic toggle creation and the option to hide the cursor when it is hovering over a playing video after 3 sec.

  • v3.4.2 25-08-2024
  • v3.4.2 25-08-2024

    Updated how toggles work and fixed a bug with the show/hide menu button.

  • v3.4.1 25-08-2024

    Added some more options to disable sorting within playlists

  • v3.4.0 25-08-2024

    introducing:

    A mobile friendly menu
    More toggles
    Filters work with both ',' and spaces now
    Added option to always redirect to english
    Updated styling
    Updated the code that hides video elements

  • v3.3.3 25-08-2024

    Some styling updates and syncing hide/show menu across tabs

  • v3.3.2 25-08-2024

    introducing a menu on the left that will also work on mobile

  • v3.3.1 25-08-2024

    Bugfix with showing watched videos on page reload

  • v3.3.0 16-08-2024
  • v3.2.3 05-08-2024
  • v3.2.3 05-08-2024

    Updated the topbar padding so the animation doesn't take place on initial page load

  • v3.2.2 05-08-2024

    Added a button to hide the menu and fixed some styling issues

  • v3.2.1 05-08-2024

    Improved the toggle states and their functions, also added ID's to the toggles. They should now correctly update and run when using multiple tabs of PH.

    Also improved the sorting of the videos by duration, that should now work all across the board.

  • v3.2.0 04-08-2024

    Updated the code and refactored the functions to make them more readable. Added Beta features as well.

  • v3.1.4 28-07-2024
  • v3.1.3 25-07-2024

    pornhub changed the trophy element

  • v3.1.2 07-07-2024
  • v3.1.0 30-06-2024
  • v3.1.0 30-06-2024
  • v3.1.0 30-06-2024

    Updated the script to use toggles instead of recolored buttons, also visually updated the manual triggers.

  • v3.0.4 09-03-2024

    updated some tags

Pokaż wszystkie wersje skryptu