Skip to content

Releases: SysAdminDoc/HushFacebookWeb

v0.0.6

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 23 Oct 03:32
  • All 18 settings pages have a new charcoal and blue layout. Search sits in the header now, each page has a bigger heading, and thin lines keep the rows apart, with nested choices indented under their setting. It fits narrow screens, and the selected section stays in view when the language switches between left-to-right and right-to-left.
  • The floating Download, Pop out and frame buttons now follow the language chosen in the panel, and their words are in the translation template.
  • New switch under Downloads, Download in post menus, off by default like Android's Download first in post menus. Open a post's three-dot menu and Download sits at the top whenever the post has a photo or video to save. It saves the same file the Download button would, so you don't have to point at the photo first. Checked on 2026-10-22 on NASA's Page.
  • A photo or video saved from a verified Page's post no longer has "Verified account" in its file name. The check mark next to the Page's name carries those words for screen readers, and they ended up in the name, and in the names Remember what you watch shows too. Checked on 2026-10-22 on NASA's Page.
  • New switch under Comments, Hide the video comment box, off by default like Android's. When a video opens on its own page, the box for writing a comment in the column beside it goes away. Comment boxes on posts stay.
  • New switch under Playback, Frame step buttons, like Android's Frame step. Pause a video or reel, then point at it or Tab to it, and Back a frame and Next frame show in its corner. Each click moves the picture one frame (a thirtieth of a second) and leaves it paused, and they go away when it plays again. Turn it on to get them. It was checked on a public reel on 2026-10-22 in page and content mode, paused with the player's own button.
  • The buttons in a video's corner close up now. Pop out used to leave an empty row on top when Download was off or had nothing to save, and now it moves up into it.
  • New switch under Appearance, Screenshot mode. It blurs people's names, profile pictures and group names, so you can share a screenshot of Facebook without them. Post text, photos, comments, timestamps and hashtags stay readable, and nothing leaves your browser. Names are found by where they sit on the page, not by any words, so it works in any language and in content mode. It's off unless you turn it on. Checked on 2026-10-22 on a Page, one of its posts with 104 comments and a reel, in page and content mode. Every profile picture, post author and commenter blurred, and so did the Page's name and cover and the reel's poster and audio line. All 102 comments, 89 timestamps and every photo stayed sharp. Home's side columns and the group name on a group post in your feed still need a signed-in check.
  • New switch under Playback, Remember what you watch, like Android's. It keeps the last 50 reels, videos and stories you watched, newest first, on its card with a link to each, so one the feed took away is easy to open again. That matters most with Don't send watch history on, since Facebook's own list stays empty then. A reel or video counts after about three seconds of playback, but one in the feed has to play with sound first, so a video that starts by itself while you scroll past isn't listed. A story counts when its card stays open for three seconds. The list is kept per Facebook account in the script's own storage, Clear the list empties it, and Copy report only says how many there are. Nothing is kept until you turn it on. Checked on public reels on 2026-10-22 in page and content mode. Feed videos and stories need a signed-in check.
  • Word lines that start with re: now run on RE2JS 2.9.0, which handles word boundaries and the start and end of a line faster. Checking 15 lines against 4,000 feed-sized posts took 36 ms instead of 85, and long posts took about a third of the time, with the same posts matched. The script is about 10 KB bigger for it.
  • Remember your volume has a new choice, Start every video muted, like Android's Keep feed videos muted. Every new video and reel starts silent, whatever volume you kept, and its speaker button or volume slider gives that one its sound until you mute it again. The next one starts muted, even though Facebook carries the sound over to the next reel. You have to pick it. On a public reel checked 2026-10-22 in page and content mode, the reel started muted, Unmute gave it sound that held, the next reel started muted again, and so did the first one after a reload. Feed videos on Home haven't had the speaker click tried with it on yet.
  • Remember your volume now takes a click right on a speaker icon. Facebook draws the new icon as soon as you click, before it turns the sound on (11 ms later on a reel checked 2026-10-22), and by then the script couldn't tell the click was yours. With a mute kept, clicking Unmute on a reel put the mute straight back unless you hit the edge of the button.
  • Download and Pop out no longer sit on top of a reel's Pause, Unmute and More options. Facebook puts those three in the top right corner of a reel, which is where the buttons went, so a click on Unmute landed on ours. The buttons now start just below whatever Facebook has in that corner, and 10 pixels down as before when it's empty. On a public reel checked 2026-10-22 with the buttons showing, a click on Unmute reached Facebook's button.
  • Hide counts has a fourth choice, Hide counts on reels, on with the switch like the others. It takes the numbers off the Like, Comment and Share buttons beside a reel in the reel viewer and leaves the icons where they are. The reel viewer draws its buttons differently from a post's, so the script finds these by their shape, a number that's all a button holds, in a column of icon buttons next to the reel's one video. In page and content mode on 2026-10-22, every count went from the reel on screen and the one after it, Comment still opened the comments, and the badges in the top bar stayed. The Diagnostics row is now called Post and reel counts hidden and counts reels too.
  • Clean up Reels has a new choice, Hide the audio line. It takes away the line under a reel's name that says what you're hearing, like "Original audio" or a song, and leaves the caption where it was. It stays off until you pick it. Checked on 2026-10-22 across five reels each in page and content mode, and every reel that had the line lost it. Android's other new reel switch, Hide Save, isn't needed here, since the web viewer keeps Save inside the reel's menu rather than beside the reel.
  • AMOLED black theme has a new choice, Lines between posts. With the page and the cards both black, posts without a photo used to run into each other. Turn it on and a thin dark gray line sits in the gap under each post in your feed. It's off until you pick it, and like the theme it only shows in dark mode. Checked on Home on 2026-10-22 with it on and off.
  • Settings an update adds now get a small dot, and so does the section they sit in. The dot goes away once you've opened that section and closed the panel, and a search result doesn't count as looking. The first time the panel opens after this update nothing has a dot, since there's no earlier list to compare with yet.
  • Hide posts by words has two more switches, Hide all shared posts and Hide all live videos. A shared post is one someone passed along from another person, Page or group. A live video counts while it's on and also as the recording Facebook keeps afterward. Both come out of Facebook's data before the post is drawn, and in content mode the script reads the post on the page instead. A shared link post has no mark of its own on the page, and the LIVE badge is only read in English, so the page check misses those two and the data catches them. On Home on 2026-10-22, with Preview on, 19 of 33 stories were shares in the data and 17 of 33 posts on the page, the other two being shared links. No live video came by on Home that day, so that switch has only been tried on test posts built like the ones on Facebook's Live page.
  • New switch, Hide when others are writing a comment (off by default, in Comments). It takes away the line under a post's comments that says someone is writing one, and new comments still show up as they're posted. Facebook sends that line along with the comments, and the script empties it before the page reads it. Nobody was typing on the busy posts watched on 2026-10-22, so the line itself hasn't turned up live yet. On the page, though, a made-up answer with someone typing came back without it, and comments opened and loaded the same with the switch on.
  • A video saved from its own page now starts with the name of the Page or person who posted it, like one saved from a post. It used to have only the video's number and HD. Facebook leaves the name off the video itself on that page and sends it separately, so the script matches the two up. Checked on 2026-10-22 on a Page's video.
  • Download any video, reel and story have a new Video quality choice, Sharpest. Facebook often streams a sharper copy of a video than the HD file it lists, usually 1080p next to a 720p file (162 of 191 videos in saved feed answers). Sharpest joins that copy and its sound into one MP4, with the same 750 MB limit as other joined videos, and saves the HD file when nothing sharper fits. A copy Facebook only blew up from a smaller original doesn't count. You have to pick it, since the sharper copy is mostly AV1, which some older players can't open. On 2026-10-22 a Page's video saved as 1080 by 1920 AV1 with sound where Best saved the 720 by 1280 file.
  • Hide suggested posts now leaves posts from groups you're in, even when Facebook puts a Join button on one. In 250 saved Home loads from 2026-10-22, one post from the test account's own group came with that button, and Facebook's category for it said it was an ordinary post. The switch took it out anyway. Now the script keeps any post Facebook files that way, and tells the page chec...
Read more

v0.0.5

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 22 Oct 15:16
  • Hide sponsored posts now covers the Sponsored box in Home's right column, the one above Friend requests. Facebook sends that box already drawn when Home first loads, so the script hides it before it shows. When Home is drawn again after a visit elsewhere, the script takes the box out of Facebook's data instead. Friend requests and the rest of the column stay where they were. Checked on facebook.com on 2026-10-21 with the userscript (page and content mode) and with the extension in Brave. The box never showed, on a fresh load or after going to Marketplace and back. Those runs also had 7 to 18 feed ads each in Facebook's data, and none of them got drawn.
  • Hide sponsored posts catches a feed ad that used to stay on screen. Facebook now draws a post's "Ad" label through a chain of six linked SVG pieces, and the check only followed the first link, so all it found was the ad's Sign up button. That button alone never hides a post. It follows the whole chain now. The check also starts reading posts while the page is still arriving, since Home's first posts come in already drawn. Checked on facebook.com on 2026-10-21. In content mode, where only the page check runs, all 4 feed ads Facebook drew were hidden. In page mode the 72 ads in Facebook's data were taken out before any got drawn.
  • Facebook loads past its splash screen again in Firefox with Tampermonkey. Tampermonkey there ran the script in a sandbox of its own, cut off from the page. The script didn't notice and hooked Facebook's page code anyway. That stopped Facebook's own scripts mid-load, and 14 features failed to start. The script now asks Tampermonkey for the page itself and checks where it really landed before it touches the page. If it still ends up in the sandbox, it turns its page-only features off and leaves Facebook alone. Checked on signed-out facebook.com on 2026-10-22 with Tampermonkey 5.5.0 on Firefox 156 and 5.5.1 on Chromium. Both ran the script in the page with no errors. A copy forced back into the sandbox started cleanly too, and Facebook loaded normally.
  • Hide suggested posts now also takes the People you may know row and the Your group suggestions row out of Home in page mode. Facebook sends each one as a feed item of its own, so the script drops it from the data before it's drawn and the feed keeps paging. It's checked against the rows Facebook sent on 2026-10-21 (none came on 2026-10-22).
  • Facebook now reads each feed answer a second time, wrapped in an extra layer of its own. Once wrapped, an answer the script had already filtered looked new to it, so it got filtered again by the page you were on instead of the request that fetched it. The script sees through the wrapper now. Right before each answer, Facebook also reads a small decoy that would show if a script edited it. The script leaves the decoy exactly as it is. Checked on facebook.com on 2026-10-22.
  • New switch, Hide the New message button. It takes the round button out of Facebook's bottom corner, where it got in the way of zoomed-in screenshots. The script finds it by its icon, so it works in any language, and chats you have open stay put. Checked on facebook.com on 2026-10-22 on Home and Marketplace in both page and content mode. That button was the only thing that went.
  • Translators have a file to start from. translations/template.json lists all 484 phrases the script can show, in English, and the README explains how to send a translation in. A test keeps it in step with the script, so a new phrase can't be left out.
  • Violentmonkey on Firefox didn't start the script at all when set to run it as a content script. It does now, with the page-only features off, the same as in Chrome.
  • A release can't go public anymore until the live check has walked that exact build on Facebook. Publishing used to go ahead without it. Now it stops and says to run the live stage first, and a new build needs a new walk.
  • The live check before a release is a fixed walk of 30 checks now, each ending PASS or FAIL. It loads Home, groups, Marketplace, Reels, Watch, Messenger and a profile with every switch on and again with every switch off. It also opens every section of the settings panel, counts the ads left on screen and opens chats to see whether read receipts go out. The walk takes about nine minutes, where the old check ran for over an hour. npm run release -- --stage live --full still runs every check there is.
  • Issue reports this release changes something for: #8 was Facebook stuck on its splash screen with Tampermonkey or Violentmonkey on Firefox, #5 asked for the Sponsored box and the People you may know and group suggestion rows to go, #7 asked for a way to hide the New message button, and #6 offered a translation, which now has a template to start from.

v0.0.4

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 18 Oct 13:39
  • General has a Language choice now. The panel and every notice the script raises read from one list of phrases with English as the fallback, so a translation can drop in without touching anything else. No translation ships yet. Two test layouts stand in for one. Long text accents every letter and makes each phrase about 40% longer, and right to left mirrors the panel while keeping the English readable. Search still finds a setting by its English words whatever the language. The log and Copy report stay in English, and so do the values in Diagnostics. Facebook's own language doesn't change the choice. A backup keeps it, and Reset to defaults leaves it alone. At phone width the search box now grows to fit a longer phrase. Checked in Chromium at 320, 360, 640 and 1024 px in English and both test layouts, across every section, Diagnostics, search, a field error, an error notice and the recovery cards. Nothing spilled sideways or got cut off, apart from one long choice in a closed dropdown that ends in an ellipsis at phone width, and no phrase skipped the list. Not tried in Firefox or with a real translation yet.
  • Requests that HushFacebook Web holds back or answers itself now behave like real ones when Facebook's code watches them. They used to jump from sent straight to done, with none of the steps in between and no response header. A finished or cancelled one also took changes a real request turns down. Now each one goes through every step a browser shows, in the same order, and refuses the same things. In Chromium a request held while your settings load used to show Facebook its start twice, and it shows it once now. Checked in Chromium 155 and Firefox 156 against an untouched request answered by a local server with the same text. Where the two browsers disagree, it follows the XHR standard, which one of them always does. Not tried on Facebook itself yet.
  • Facebook no longer sits on gray loading placeholders when another extension or script changed how the page reads request answers before HushFacebook Web loaded. The two kept asking each other for the same text until the browser gave up with "Maximum call stack size exceeded" ("too much recursion" in Firefox). Tried in Chromium and Firefox with a stand-in for that other script, which reproduces the error on the old code.
  • A slow photo or video save can be cancelled now. If it's still going after a moment, a Saving notice with a Cancel button stays up until it ends, and Cancel stops the transfer in the browser instead of letting it run on. The whole save has one ten minute limit, so a stalled transfer ends with a message rather than hanging, and neither a cancel nor the limit starts a second try behind your back. In the extension a long video counts as saved only once the browser has all of it (it used to say Saved after 20 seconds while the file was still coming in). When the browser gives up on a download partway, the message says why. Closing the tab leaves the file saving, and a save still finishes when Chrome restarts the extension's background in the middle of it. Tried in Chromium with the extension against a local server: a quick save, a 25 second one, Cancel, a server that cut off every transfer, a restarted background and a closed tab. Tried in Tampermonkey 5.5.1 too, through its own downloads and through the fallback for file types it won't save: a quick save, a stalled one and Cancel.
  • A photo or video save that fails now shows one notice saying why. A second one used to pop up right with it ("Couldn't save a photo or video. Details are in Diagnostics."), which said the same thing. Diagnostics still has the details.
  • Publishing a release now downloads every file back from GitHub (the script, the .meta.js, the extension zip and SHA256SUMS.txt) and stops if any of them differs from what was built, or if the version inside one doesn't match the release. It used to check only the script.
  • Firefox no longer logs a burst of errors when Marketplace only sends Home to Marketplace. For a moment Firefox keeps the page it's leaving, with no body, and every switch that watches the page tried to watch that empty one too. They now skip a page that finishes loading with no body. Tried in Firefox 156 with the extension: Marketplace only still redirects, and the page shows no errors from the script.
  • The build now makes a Firefox copy of the extension too, in dist/extension-firefox, for Firefox 128 or newer. Load its manifest.json with Load Temporary Add-on on about:debugging (the README has the steps). Mozilla hasn't signed it yet, so Firefox drops it when you close the browser. Tried signed out in Firefox 156, installed from the built folder: the script started in the page, settings went both ways through the extension's storage, a Facebook image saved under the name it was given, and the toolbar button opened the settings. Marketplace only, saved in the extension, sent Home to Marketplace, and the daily release check found nothing newer. Firefox 128.0esr, the oldest it takes, passed the same checks as Chrome 120 against a local stand-in for Facebook: the background and both page scripts started, Hold back usage logs stopped the page's first log posts with it on and let them through with it off, and a switch turned off in the panel was saved and still off after a reload.
  • A re: line in Hide posts by words can't freeze Facebook anymore. Patterns used to run on the browser's own matcher, and one like (a+)+$ could lock up the tab on a long post. They run on RE2JS now, whose time grows only with the length of the post, whatever the pattern. Case, accents and other alphabets match the way they did before. RE2JS has no look-ahead ((?=, (?!) or back-references (\1, \k<name>) and won't take a group inside a look-behind, so a line that uses one is skipped. It stays in your list and your backups exactly as you wrote it, Diagnostics names it with the reason, and a notice says so once per list. A look-behind without a group, like (?<!not )sponsored, still works. The script is about 270 KiB bigger for it.
  • Screen readers now read each switch with its help text, and a switch that can't run says why. It stays reachable with Tab so that reason gets heard, and Diagnostics names the reason too. A feature that broke partway can still be switched off, which stops whatever part of it did start, with no need for Reset or Pause. The setting search announces how many settings match after you stop typing, rather than with every letter. Switch and text box edges are easier to see now, and a switch that's on has a dark knob instead of a pale one that was hard to make out. Checked in Chromium and Firefox at phone widths, at 200% zoom and with forced colors, by reading each browser's accessibility tree. It hasn't been tried with a real screen reader yet.
  • One document in a Facebook answer that runs past about 8 million characters (four times the biggest one seen) now goes to the page as it came, piece by piece, instead of being held whole until it ends. It isn't filtered as it arrives. Diagnostics counts these under Answers too long to filter and the log mentions the first one, so a missed ad there doesn't look like a filter that worked. Documents before and after it in the same answer are filtered as usual. A long document is also no longer searched again from the start each time more of it arrives.
  • The extension asks for Chrome 120 or newer now, which is what its code is built for. It used to say 111, though nothing older than 120 was ever tried. Tried in Chrome 120 itself: the extension started, Hold back usage logs stopped the page's first log posts before its settings had even loaded, and a switch turned off in the panel was saved and still off after a reload. The README now lists the oldest browsers the userscript runs in too (Chrome and Edge 120, Firefox 128, Safari 17).
  • The toolbar button's settings still open when Chrome stops the extension's background while Facebook is loading. Chrome stops an idle background whenever it likes, and the wait used to live only in its memory, so a stop in between would have lost it. Now the button writes down which tab it's waiting on, and that page asks as it starts, which wakes the background again. The panel opens once. Clicking again while the tab loads takes you to it instead of opening another Facebook tab or reloading. If the page hasn't asked within a minute, that tab's button shows a "!" and its tooltip says to reload Facebook and click again. Nothing watches your other tabs, and it needs no new permissions. Tried in Chrome 120 and current Chromium with the background stopped on purpose halfway through a load.
  • For anyone working on the code, the stand-in pages the tests use can't reach the network anymore. With happy-dom 20 they could load stylesheets and iframe pages from the Facebook addresses inside a fixture. Every test page now comes from one helper that turns off stylesheets, iframes, images, scripts, navigation and requests, and a test checks that against a local server. The tests moved to happy-dom 21 too. This only touches development. The script and the extension never run in happy-dom, so nothing you install changes.
  • General in the extension now says how the last release check went. It shows when GitHub last answered and says plainly when a check couldn't reach GitHub or got an answer that made no sense. It only says you have the newest release after a check that worked. Check now asks GitHub right away. A failed check used to wait a whole day, and now it tries again in 15 minutes, then an hour later, then four hours, then once a day. When GitHub asks for a pause, the next check waits until GitHub says it's fine. A newer release it already found stays shown while later checks fail. It still only tells you, and nothing gets downloaded or installed.
  • A settings backup with nothing in it this version can use is turned away now, with a message, instead of putting every setting back to its d...
Read more

v0.0.2

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 12 Oct 01:50
  • Checked in Violentmonkey on Chrome as well as Tampermonkey. The script starts in the page, takes Marketplace and search ads out before Facebook sees them, gives Copy link the post's own address and keeps a story view to yourself, the same as in Tampermonkey.
  • The tests now run against scrubbed copies of what Facebook really sends: a feed page, the home page's inline feed data, a Marketplace page with an ad card, a search page with an ad, and the request that marks a story as seen. A new script turns a raw capture into one of these fixtures, replacing ids, names, places, text, tokens and links with stand-ins keyed by a private key, and a test checks every fixture for leftover ids, tokens, places and addresses.
  • Groundwork for hiding posts on the page itself, for the features that can't catch a post in Facebook's data. It never marks the feed's own rows, which is what stalls scrolling in other blockers. Diagnostics counts hidden posts by reason. There's also a new General setting that leaves a one-line "Hidden: Sponsored. Show" note where a post was, and clicking it brings the post back. A post hidden by two switches at once stays hidden until both are off.
  • Search ads and Marketplace ad cards have their own switches now, like on Android, and there's a new Hide sponsored reels switch that drops the ad breaks Facebook schedules inside videos and reels. All three are on by default. If you'd turned Hide sponsored posts off in v0.0.1, the update turns the search and Marketplace switches off for you once, since the old switch covered those too, and importing settings saved from v0.0.1 does the same. Every ad rule lives in one table that says where it was seen and what it removes.
  • Once a day the script checks that your userscript manager is really keeping what it saves. It leaves a small token in the manager's storage and a copy in the page's own storage, and the next day both should still match. If the manager lost it, or won't save or read back at all, you get a message saying your settings may not be saving, and Diagnostics shows it under Storage check. The page's copy is kept in its IndexedDB, because Facebook's page clears localStorage keys it doesn't know within seconds of loading. For the same reason, a manager that gives scripts no storage of their own can't keep your settings on Facebook at all, and the script now tells you when that's the case.
  • Diagnostics now lists why the last 50 posts were hidden: which rule, what it matched (a word, an ad marker, the same photo as a post you've seen), and whether it came out of Facebook's data or was hidden on the page. Copy report includes the list. Each post is named by a short tag made from its id, so a report you paste somewhere doesn't carry the ids of posts you saw.
  • The page-side ad check now has a test against 100 real posts that aren't ads, from Home, the groups feed and a post search, laid out the way Facebook drew them. None of them is taken for an ad, and each one with a Sponsored label added to its header is caught. Live, with the script running on those same pages, nothing was marked.
  • Posts that change after Facebook draws them are followed properly. One that takes on a different role stops counting as a post, and a post that got folded into another one counts on its own again when the outer one stops being a post. A post hidden for two reasons stays hidden until both are lifted. A post opened from a link to one of its comments is still a post.
  • Force dark mode now notices when Facebook switches itself to dark while the switch is on, so turning Force dark off afterwards leaves Facebook dark instead of putting light back. Tried live by having the page write its dark theme the way Facebook does and then turning the switch off. The page stayed dark, and without that write it went back to light.
  • New Keep your place in the feed switch, under News feed, off by default. Facebook reloads Home from the top when you come back after two minutes in another tab or ten minutes away from the computer, and after half an hour away it moves you from a group, Marketplace or search to Home. With the switch on, the time limits Facebook checks for that never run out, and its check for moving you to Home says no. Live, Home left hidden for two and a half minutes came back at the same post with the switch on, and at the top without the script. It needs the script running in the page.
  • New Show comments as written switch, under Comments, off by default. If your account has Facebook's automatic translation on, comments in other languages come already translated. With this on you see what people actually wrote, mentions included, and See translation under a comment still brings up Facebook's translation when you want it. Tried live on a French and a Spanish news Page, where every comment read in its own language and See translation worked. It needs the script running in the page.
  • New Tag suggestions only after @ switch, under Comments, off by default. Normally, typing a friend's first name in a comment box makes Facebook offer to tag them, with no @ needed, which makes it easy to tag someone by accident. With the switch on, a name typed on its own matches no one, and typing @ first still finds everyone. Tried live in a comment box: no suggestions for a name without @, and the usual ten with it. It needs the script running in the page.
  • Facebook's page regularly sends Facebook the name and size of everything kept in your browser's storage for facebook.com. The script keeps a few marks there for the tab you're in, and their names alone would have said it was running. With the script running in the page, those marks now step out while Facebook counts and come straight back, so the report doesn't name them. Live, none of the reports the page sent named them, where before every one did.
  • New Hold back usage logs switch, under Privacy, off by default. Facebook's site keeps a log of what you look at and click and sends it in batches as you go. With the switch on those batches never leave your browser, and the page is told they were sent, so it doesn't keep them to try again. Nothing else is held back. Live on Home, the page tried to send two batches and neither left, and nothing on the page broke. It needs the script running in the page.
  • New Hide that you're writing a comment switch, under Comments. As soon as you type in a post's comment box, Facebook tells everyone else looking at that post that you're writing a comment. With this on, that request never leaves your browser. It's off by default.
  • Hide sponsored reels now clears the ad break schedule that comes with each longer video in the feed, search, Marketplace and video pages. That's the list of mid-roll slots, one and two minutes in, so the player has no break to fill. Before, it only emptied the ads Facebook fetches for a break, and that part now only looks inside the one answer they come in. Diagnostics counts the videos it cleared.
  • Checked the rest of the share sheet with Sanitize sharing links on. Share to WhatsApp gets the post's own address too, and sharing through Messenger, to a group or to a friend's profile works the same as without the script.
  • Hide sponsored posts has a second layer. If an ad still gets drawn, the script reads the post's header the way you see it and hides the post when it says Sponsored or Ad. It sees through the ways Facebook disguises that label, like letters that are shuffled and put back in place by the layout with hidden decoys mixed in, or a label that points at text Facebook deletes a moment later. A post with only a Shop now style button isn't hidden, since group posts and shares carry those too. This layer works even when your manager runs the script as a content script, so Hide sponsored posts no longer switches off there. English labels only for now. Diagnostics shows how many ads each layer caught.
  • Facebook Feed Filter's MIT license notice is in THIRD_PARTY_NOTICES.txt and at the end of the built script, since the page-side ad check follows its approach.
  • New Hide Stories tray switch. It takes the Stories row off the top of Home, along with the "What's on your mind?" box unless you turn that part off, and the first post moves up into the space. It's off by default.
  • New Hide suggested posts switch, on by default. Posts from Pages, people and groups you don't follow come out of Home and your groups feed before Facebook draws them, and any that slip through, or all of them in content mode, are hidden by the Follow or Join button next to the name. Search results, a Page's own posts and groups you're browsing aren't touched.
  • New Hide reel rows in the feed switch for the rows of reels Facebook puts between posts. Reels your friends post stay. It's off by default.
  • New Hide posts by words switch. List words, phrases, people, Pages, groups or sites, one per line, and posts on Home and in your groups feed that match are gone before Facebook draws them. A phrase only matches whole words, so "cat" leaves "concatenate" alone. Start a line with re: to write a pattern, or with "# " for a note to yourself. There are also switches that hide every photo, video or link post and every post with a colored background. A post opened from its link is never hidden, and comments don't count toward a match. In content mode posts are hidden on the page, with a note saying which line caught them. Diagnostics counts what each line hid and points out lines that aren't valid patterns.
  • New Hide seen posts switch. Posts on Home and in your groups feed that you've already scrolled past stay away for the days you pick: 1, 3, 7 or 30. A post counts as seen once it's been on screen for a second, and the ones you see during a visit stay where they are until you come back. Facebook's page doesn't say which post is which any more, so the script knows a post by its photo or video, or by its first words, and keeps that list in your userscript manager. The switch's card has two buttons, one to s...
Read more

v0.0.1

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 11 Oct 01:14
  • The groundwork. Settings live in your userscript manager and get their own panel, which can back them up and show diagnostics. Underneath, a data layer cleans Facebook's feed as it loads and can hold back single requests.
  • First features: Hide sponsored posts, View stories anonymously, Sanitize sharing links, Skip Facebook's link redirect, Following feed on Home, Tap to play and Turn off HDR brightness. All seven have run on facebook.com, and the script has been checked installed in Tampermonkey on Chrome.
  • If two copies of the script are installed, the second one stays out of the way and the first one says so.
  • Hide sponsored posts follows how Facebook marks ads as of October 2026. It now renames its ad fields and scrambles the post category, so the old markers would have missed every ad. The same switch also covers Marketplace ad cards and ads in search results.
  • Copy link gives the post's own address. Without it, Facebook hands out a facebook.com/share link that leads back to whoever copied it.
  • Tap to play starts a video only when you click that video. Clicking anywhere else, like the Reels link, no longer lets the next one start by itself.
  • The settings switch at the top of the panel now reads on while the script is running.