FYTE /Fast YouTube Embedded/ Player

Hugely improves load speed of pages with lots of embedded Youtube videos by instantly showing clickable and immediately accessible placeholders, then the thumbnails are loaded in background. Optionally a fast simple HTML5 direct playback (720p max) can be selected if available for the video.

These are versions of this script where the code was updated. Show all versions.

  • v2.15.1 21.01.2025.

    fix formatting of duration

  • v2.15.0 27.12.2024.

    stop iframes via location + native cover fit

  • v2.14.0 26.11.2024.

    improve reliability: don't use expando as some sites break it

  • v2.13.2 11.06.2024.

    fix autoplay, exclude pikabu.ru

  • v2.13.1 26.05.2024.

    speed up hasChildWindow

  • v2.13.0 26.05.2024.

    fix video card in google search

  • v2.12.19 12.05.2024.

    lazy db init, idle if no frames, fix cover url

  • v2.12.18 22.03.2024.

    fix indexedDB auto clean-up

  • v2.12.17 10.10.2023.

    switch from localStorage to indexedDB to improve page load performance

  • v2.12.16 19.08.2023.
    • fix errors for trustedTypes and YTlistener
    • custom rules in GM storage (use your userscript manager editor for storage)
    • minify cache data
    • reveal iframe earlier on error
  • v2.12.15 27.06.2022.

    tampermonkey compat

  • v2.12.14 26.06.2022.

    typo

  • v2.12.13 26.06.2022.

    fix object embeds

  • v2.12.12 10.03.2022.

    google search fullcard video fix

  • v2.12.11 07.10.2021.

    video card in google search

  • v2.12.10 22.07.2021.

    use watch page since get_video_info is gone

  • v2.12.9 12.07.2021.

    show reason when non-playable

  • v2.12.8 18.06.2021.

    fix get_video_info

  • v2.12.7 18.01.2021. reset paddings/margins
  • v2.12.6 20.12.2020. fix video card on google.com
  • v2.12.5 09.07.2020. fix fullscreen button
  • v2.12.4 16.06.2020. fix google search video card
  • v2.12.3 08.05.2020. only override fullscreen button if frame is reachable
  • v2.12.2 04.05.2020. src may be null
  • v2.12.1 27.04.2020. restore the missing comma in known titles; use onvolumechange
  • v2.12.0 19.04.2020. rewrite to ES2017 + don't exit full screen upon seeking in timeline + show timestamp in storyboard
  • v2.11.0 25.03.2020. typo
  • v2.11.0 24.03.2020. support invidio.us player
  • v2.10.1 21.02.2020. skip already deleted nodes
  • v2.10.0 30.01.2020. various fixes
  • v2.9.18 19.12.2019. preserve CSS transform
  • v2.9.17 12.08.2019. decode youtube signature
  • v2.9.16 12.08.2019. fix video info parser
  • v2.9.15 27.07.2019. skip nodes with position:fixed and "YouTube on Hover Preview"
  • v2.9.14 27.07.2019. only recreate the YT fullscreen button if there's a parent FYTE instance (which may not be the case if the user excluded the site manually)
  • v2.9.13 18.06.2019. correctly pause/unpause on click in Chrome
  • v2.9.12 24.03.2019. force-enable the fullscreen button
  • v2.9.11 05.01.2019. don't recheck frames/objects take 2
  • v2.9.10 05.01.2019. don't recheck frames/objects
  • v2.9.8 27.11.2018. allow fullscreen and autoplay in new Chrome
  • v2.9.7 20.10.2018.
  • v2.9.6 20.10.2018.
  • v2.9.5 16.10.2018.
  • v2.9.4 08.12.2017.
  • v2.9.3 07.12.2017. fix videos on play.google.com
  • v2.9.2 19.11.2017. fix resizing of a pinned player
  • v2.9.1 18.11.2017. intercept videos on reddit comment pages
  • v2.9.0.5 22.09.2017. strip "v=" in invalid links like "/embed/v="
  • v2.9.0.4 26.08.2017. also process data-src attributes
  • v2.9.0.3 25.08.2017. reset CSS transform
  • v2.9.0.2 19.08.2017. fix fullscreen
  • v2.9.0.1 17.08.2017. workaround for chrome cssText property bug
  • v2.9.0 14.08.2017.
  • v2.8.9 12.08.2017.
  • v2.8.8 24.07.2017. process videos on developers.google.com
  • v2.8.7 12.07.2017. don't add span element for duration if it's unknown
  • v2.8.6 11.07.2017. autocleanup cache; show fps
  • v2.8.5 07.06.2017. clarify video quality option via tooltip
  • v2.8.4 06.06.2017. Add default video quality option
  • v2.8.3 27.05.2017. prevent double activation of iframe player
  • v2.8.2 23.05.2017.
  • v2.8.1 22.05.2017.
  • v2.8.0 08.04.2017. fix https://greatest.deepsurf.us/en/forum/discussion/21433/
  • v2.7.9 31.01.2017. Fix occasional double-fetching of storyboard thumbnails
  • v2.7.8 31.01.2017. Handle CSS columns to calc the dimensions
  • v2.7.7 07.12.2016. Expand the parent-eating rule to check paddingTop on the parent element itself like https://jakearchibald.com/2016/fun-hacks-faster-content/
  • v2.7.6 24.10.2016. fix theverge videos
  • v2.7.5 17.10.2016. Skip playlist embeds
  • v2.7.4 03.10.2016. exclude some google+ iframes used in youtube's notifications
  • v2.7.3 07.09.2016. Don't try to process non-youtube videos, don't get unneeded info for autoplayed videos
  • v2.7.1 12.08.2016. Fix the first click-to-pin in iframe mode
  • v2.7.0 08.08.2016. edit description
  • v2.6.9 07.08.2016. Don't start dragndrop off the control bar
  • v2.6.8 07.08.2016. Chrome hack to restore autofullscreened iframes
  • v2.6.7 07.08.2016. Delayed cover image display for autoplayed videos
  • v2.6.6 07.08.2016. Keep centering when sizemode=original
  • v2.6.5 07.08.2016. typo
  • v2.6.4 07.08.2016. Cache titles and other info
  • v2.6.3 07.08.2016. Middle-click starts fullscreen playback
  • v2.6.2 06.08.2016. Don't animate background when autoplaying
  • v2.6.1 04.08.2016. Process more OBJECT embeds
  • v2.6.0 04.08.2016. Fix: clicking the title should open a youtube page
  • v2.5.9 03.08.2016. Fix stacking on the bottom, don't stack on self.
  • v2.5.8 03.08.2016. Drag'n'drop zone may be the original placeholder. Add 9gag.
  • v2.5.7 02.08.2016. Add drag'n'drop pinning, make 'pinnable' On, Hide, Off. Show shadow under corner-pinned videos.
  • v2.5.6 01.08.2016. Add transparent corner pins option. TL nanodedup
  • v2.5.5 31.07.2016. Corner pins fade-in/out on hover. Inject styles only if processed videos are present.
  • v2.5.4 31.07.2016. Actually use the 'pinnable' option
  • v2.5.3 31.07.2016. Move pinned directly played videos on top
  • v2.5.2 31.07.2016. Improve the description
  • v2.5.1 31.07.2016. Corner pinning. Fixup: properly cleanup adopted CSS in FF.
  • v2.5.0 31.07.2016. Correctly set title link width. Fix on-resize timer, speedup the adjustment. Parse video size more reliably. Add storyboard element only when data is obtained. Display storyboard thumb to the left of mouse cursor
  • v2.4.9 30.07.2016. Keep display:inline as display:inline-block. Reuse image preloader. Storyboard fixup when part index = 0
  • v2.4.8 30.07.2016. Storyboard click jumps to corresponding time. Spinner fixups. Correctly override existing url params.
  • v2.4.7 29.07.2016. Fix storyboard preview. Show spinner while loading storyboard pic under cursor.
  • v2.4.6 29.07.2016. Show full length storyboard (seekbar preview)
  • v2.4.5 28.07.2016. Compatibility with pre-47 Firefox
  • v2.4.4 28.07.2016. Don't intercept Youtube Link Title
  • v2.4.3 27.07.2016. Fix youtu.be links, add reddit videos. Don't adopt original margin. FF rounding bug fix. Constrain min-width and min-height. Fix embedly's youtube.com%2Fembed.
  • v2.4.2 26.07.2016. Prioritize per-site rules. Work around FF's buggy getElementsByTagName, getComputedStyle. Move our rules to the end of HEAD to increase CSS specificity
  • v2.4.1 26.07.2016. fixup for 'prevent parent clipping'
  • v2.4.0 25.07.2016. Per-site rules (pikabu.ru added). Embed the icon as data url. Code cosmetics.
  • v2.3.9 25.07.2016. Consume parents of retardedly positioned videos. Fade-in black background color from transparent.
  • v2.3.8 25.07.2016. fixup: check googvid.length
  • v2.3.7 25.07.2016. Speedup page loading: reduce time spent in MutationObserver 5x times
  • v2.3.5 24.07.2016. Process autoplay=1 videos
  • v2.3.4 24.07.2016. Add translations: Russian
  • v2.3.3 23.07.2016. Original size mode: never remove parent elements
  • v2.3.2 22.07.2016. Keep parent element if it has a class name or id; strip 'overflow:hidden' from parent chain
  • v2.3.1 22.07.2016. Remove +0.49
  • v2.3.0 21.07.2016. Don't round width and height to integer
  • v2.2.8 21.07.2016. fixup
  • v2.2.7 21.07.2016. Fixed: fresh install
  • v2.2.6 21.07.2016. Process disqus comments, force fullscreen when inside nested iframes
  • v2.2.5 20.07.2016. Inaccessible video background #888
  • v2.2.4 20.07.2016. Gray out inaccessible video placeholders
  • v2.2.3 20.07.2016. Replace 'watch?v=' with 'embed/' when loading iframe player
  • v2.2.2 20.07.2016. Missing ;
  • v2.2.1 19.07.2016. fixup: getComputedStyle is implemented differently in Chrome and Firefox
  • v2.2.0 19.07.2016. Keep some attributes of custom positioned videos
  • v2.1.9 19.07.2016. Fixup of option buttons click
  • v2.1.8 19.07.2016. fixup for google results top video
  • v2.1.7 19.07.2016. Don't force custom size to a multiple of 10
  • v2.1.6 18.07.2016. Google results: process top video match
  • v2.1.5 18.07.2016. Make video player size equal to the FYTE container, so it's autostretched when container size changes
  • v2.1.4 17.07.2016. Adjust height to keep proportions when desired player width is constrained by page layout
  • v2.1.3 15.07.2016. Limit storyboard thumbnail height to 33%
  • v2.1.2 15.07.2016. Force visibility of Play button
  • v2.1.1 15.07.2016. fixup: infinite loop
  • v2.1 15.07.2016. Storyboard thumbnails. Faster title fetching. Fix 'Original' size mode
  • v2.0.2 11.07.2016. fixup: FF options size selector
  • v2.0.1 11.07.2016. fixup: allow click-to-play before video info is fetched
  • v2.0 11.07.2016. Custom size options. Use !important for all CSS. Raise CSS specificity for video/iframe by inlining the styles
  • v1.5.5 10.07.2016. fixed some issues with 4:3 embeds, [x]resize now keeps the clicked video's center at a relatively same window position
  • v1.5.4 09.07.2016. Use the actual aspect ratio of video to display the thumbnails, add "Safe" option, autoresize videos when browser window size changes
  • v1.5 30.06.2016. Show video title and duration on thumbnails
  • v1.4.4 11.03.2016. Replace entire OBJECT element
  • v1.4.3 04.02.2016. Adjust thumbnail size on DOMContentLoaded
  • v1.4.2 18.01.2016. fixup tooltip text
  • v1.4.1 18.01.2016. fixup: remove "debugger" call
  • v1.4 18.01.2016. Fix options behavior. Autopause other videos when a new video starts to play.
  • v1.3.3 18.01.2016. Support @connect-src
  • v1.3.2 19.12.2015. Rename
  • v1.3.1 19.12.2015. No preemptive fade-out on HTML5 video
  • v1.3 19.12.2015. Fix playback on new Youtube videos + fade-out
  • v1.2.3 10.11.2015. don't process non-video embeddings like that on last.fm
  • v1.2.2 10.11.2015. fix positioning via !important
  • v1.2.1 08.11.2015. increase specificity
  • v1.2 24.10.2015. +option Play directly
  • v1.1.2 12.10.2015. update to setMutationHandler
  • v1.1.1 25.08.2015.
  • v1.1.0 13.05.2015. fixup
  • v1.0.9 13.05.2015. override site's padding and margin for thumbnail elements
  • v1.0.8 12.05.2015. Remember volume, show option [x] resize to fit
  • v1.0.7 29.04.2015. explicitly set the fonts of the links
  • v1.0.6 27.04.2015. process old flash EMBEDs too
  • v1.0.5 27.04.2015. fixup
  • v1.0.4 27.04.2015. HTML5 mode: show a title on hover with a link to watch on youtube
  • v1.0.3 24.04.2015. don't break frames with autoplay=1
  • v1.0.2 17.04.2015. Add '?' to iframe src if needed
  • v1.0.1 17.04.2015. HTML5 player: better stream selection, should play hd720 by default
  • v1.0 16.04.2015.