[{"data":1,"prerenderedAt":163},["ShallowReactive",2],{"project-\u002Fprojects\u002Fyoutube-shorts-blocker":3,"related-youtube-shorts-blocker":134,"news-youtube-shorts-blocker":135,"more-youtube-shorts-blocker":136},{"id":4,"title":5,"body":6,"coverLabel":111,"description":112,"detailImage":111,"extension":113,"featured":114,"github":115,"image":116,"imageFit":111,"links":117,"meta":121,"navigation":114,"order":122,"path":123,"platforms":124,"seo":125,"stem":126,"tags":127,"tech":130,"url":111,"__hash__":133},"projects\u002Fprojects\u002Fyoutube-shorts-blocker.md","YouTube Shorts Blocker",{"type":7,"value":8,"toc":102},"minimark",[9,14,27,31,74,78,81,84,88,95,99],[10,11,13],"h2",{"id":12},"overview","Overview",[15,16,17,18,22,23,26],"p",{},"Shorts show up all over YouTube: the home feed, search results, channel pages and the sidebar. This extension hides them. It runs locally in the page, with no accounts, telemetry or network requests of its own. It only runs on ",[19,20,21],"code",{},"www.youtube.com"," and ",[19,24,25],{},"m.youtube.com",", and its one permission, storage, remembers a single setting.",[10,28,30],{"id":29},"what-it-does","What it does",[32,33,34,42,52,58,68],"ul",{},[35,36,37,41],"li",{},[38,39,40],"strong",{},"Hides Shorts"," cards, shelves, search filters and navigation entries",[35,43,44,47,48,51],{},[38,45,46],{},"Redirects Shorts pages",": a ",[19,49,50],{},"\u002Fshorts"," link goes to the YouTube home page, and a channel's Shorts tab goes to the channel itself",[35,53,54,57],{},[38,55,56],{},"Lets you turn redirects off",", so a Shorts link someone sends you still opens while your feeds stay clean. Redirects are on by default.",[35,59,60,63,64,67],{},[38,61,62],{},"Fixes search filters",": if the Shorts filter is selected, it switches to ",[38,65,66],{},"All"," when that button is available",[35,69,70,73],{},[38,71,72],{},"Installs without a build step",": download the ZIP from the latest release and load it in Chrome",[10,75,77],{"id":76},"how-it-works","How it works",[15,79,80],{},"Hiding happens in two passes. CSS hides the page elements YouTube uses only for Shorts, so they never appear. JavaScript then checks where each remaining card actually links to, rather than relying on how the markup looks, which holds up better when YouTube changes its layout. It also rechecks cards that YouTube reuses, so a card can reappear once it shows a normal video.",[15,82,83],{},"When a shelf mixes Shorts with regular videos, the extension leaves it alone, because hiding normal videos is worse than leaving a gap. Tests run the page logic under jsdom.",[10,85,87],{"id":86},"limitations","Limitations",[15,89,90,91,94],{},"YouTube serves different layouts depending on account, region and experiments, so an unfamiliar card may only have its Shorts link hidden, which leaves a gap. Buttons are detected by their English labels (\"Shorts\" and \"All\"); other languages rely on links and Shorts-only elements. The extension doesn't look at video length, and the same video still plays if opened as a regular ",[19,92,93],{},"\u002Fwatch"," link.",[10,96,98],{"id":97},"built-with","Built with",[15,100,101],{},"Plain JavaScript on Manifest V3, with no runtime dependencies, and jsdom for tests.",{"title":103,"searchDepth":104,"depth":104,"links":105},"",2,[106,107,108,109,110],{"id":12,"depth":104,"text":13},{"id":29,"depth":104,"text":30},{"id":76,"depth":104,"text":77},{"id":86,"depth":104,"text":87},{"id":97,"depth":104,"text":98},null,"A lightweight Chrome extension that hides YouTube Shorts everywhere and can redirect Shorts links.","md",true,"https:\u002F\u002Fgithub.com\u002Ffoksa\u002Fyoutube-shorts-blocker","\u002Fimg\u002Fproducts\u002Fyoutube-shorts-blocker.webp",[118],{"label":119,"url":120},"Download ZIP","https:\u002F\u002Fgithub.com\u002Ffoksa\u002Fyoutube-shorts-blocker\u002Freleases\u002Flatest\u002Fdownload\u002Fyoutube-shorts-blocker.zip",{},3,"\u002Fprojects\u002Fyoutube-shorts-blocker","Chrome",{"title":5,"description":112},"projects\u002Fyoutube-shorts-blocker",[128,129],"privacy","offline-first",[131,132],"javascript","chrome-extension","Qu5d4H9QsRj7agh8wG1fAFpo3C5xBr2nC_KLlDj0h9E",[],[],[137,142,148,149,154,158],{"path":138,"title":139,"description":140,"image":141,"imageFit":111,"coverLabel":111},"\u002Fprojects\u002Fcamera-video-converter","Camera Video Converter","Free, offline Android app that turns hard-to-share camera footage into standard 1080p MP4s, right on the phone.","\u002Fimg\u002Fproducts\u002Fcamera-video-converter.webp",{"path":143,"title":144,"description":145,"image":146,"imageFit":147,"coverLabel":103},"\u002Fprojects\u002Fopen-claude-agent-sdk","open-claude-agent-sdk","Drop-in, open-source replacement for @anthropic-ai\u002Fclaude-agent-sdk. Readable TypeScript that runs on the Claude CLI you already have installed.","\u002Fimg\u002Fproducts\u002Fopen-claude-agent-sdk-home.webp","contain",{"path":123,"title":5,"description":112,"image":116,"imageFit":111,"coverLabel":111},{"path":150,"title":151,"description":152,"image":153,"imageFit":111,"coverLabel":111},"\u002Fprojects\u002Fsub2utf","sub2utf","Converts subtitle files (.srt) from legacy encodings to UTF-8 so Plex shows č, ć, š, đ and ž correctly.","\u002Fimg\u002Fproducts\u002Fsub2utf.webp",{"path":155,"title":156,"description":157,"image":111,"imageFit":111,"coverLabel":111},"\u002Fprojects\u002Fdocument-iteration-skill","document-iteration-skill","A lightweight markdown syntax for editing documents with Claude: leave feedback inline instead of asking it to regenerate the whole document.",{"path":159,"title":160,"description":161,"image":162,"imageFit":111,"coverLabel":111},"\u002Fprojects\u002Flitrpgvault","LitRPG Vault","A database of LitRPG and Progression Fantasy books: 250+ series with ratings, reading orders and audiobook links.","\u002Fimg\u002Fproducts\u002Flitrpgvault.webp",1790076223311]