Privacy controls for Instagram, Facebook, and Messenger web.
Website | Status | Chrome Web Store | Microsoft Edge Add-ons | Help & feedback
Ghostify is a Manifest V3 browser extension that helps reduce social pressure on Meta web apps. Its privacy controls block supported read receipts, typing indicators, and story-view signals locally in the browser, without requiring a Ghostify account or asking for social media passwords.
Ghostify has 4,000+ users listed on the Chrome Web Store.
| Browser channel | Package target | Publication state |
|---|---|---|
| Chrome Web Store | Chromium | Published |
| Microsoft Edge Add-ons | Chromium | Published |
| Firefox Browser Add-ons (AMO) | Firefox | Published |
Chrome and Edge use the package generated by npm run package:extension (also
available as npm run package:chromium). Firefox uses the separate
npm run package:firefox target. Runtime source is shared; browser-specific
manifest and release requirements are kept separate. See
Browser Distribution for the authoritative
maintainer contract.
| Privacy control | Messenger | ||
|---|---|---|---|
| Hide Seen / read receipts | Yes | Yes | Yes |
| Hide typing indicators | Yes | Yes | Yes |
| Hide story-view signals | Yes | Yes | Shared Facebook control |
Facebook and Messenger share the same Messenger / Facebook controls in the popup.
Ghostify publishes a public Verification Status page for the supported web surfaces. The latest merged maintainer update remains authoritative until a newer status PR is merged; age alone never changes green to yellow.
Community reports can help downgrade or review a status, but public green verification requires maintainer review. Screenshots and recordings must be redacted, private messages should not be submitted, and public credit is opt-in only.
The popup follows the latest dated status record. A working record shows a green dot with its month and day, regardless of how old that date is. A report, confirmed issue, work-in-progress, or review record shows a yellow dot with that record's month and day. A scheduled workflow can prepare a daily verification PR, but it does not publish green automatically; merging the PR is the maintainer's explicit confirmation after completing the linked smoke checklist. The workflow refreshes one pending daily PR instead of creating duplicates, so an unmerged proposal never changes the live website or popup. Installed popups receive JSON-only status updates after the status-capable extension build and its website host permission have first been published through the applicable browser store. Chrome, Edge, and Firefox use the same public feed, date, color, and update title.
Install Ghostify from the Chrome Web Store.
Install Ghostify from Microsoft Edge Add-ons.
Install Ghostify from Firefox Browser Add-ons.
For local Firefox development:
- Clone or download this repository.
- Run
npm install. - Run
npm run build. - Run
npm run prepare:firefox. - Open
about:debugging#/runtime/this-firefoxin Firefox. - Choose Load Temporary Add-on and select
tmp/firefox-extension/manifest.json.
- Clone or download this repository.
- Run
npm install. - Run
npm run build. - Open
chrome://extensionsin Chrome or a Chromium-based browser. - Enable Developer mode.
- Click Load unpacked and select the
dist/folder.
Use the Chrome Web Store badge above for the current published version. GitHub
Releases contain source
release notes when a matching GitHub release has been published. The repository
may be prepared at the next version while Store review or release work is still
pending; site/src/app/statusData.json records those identities separately.
Ghostify's privacy controls run locally through browser extension APIs:
declarativeNetRequestrules block known privacy-related endpoints where static rules are reliable.- Content scripts and page-context patches handle modern Meta web app behavior that cannot be covered by static rules alone.
- User settings are saved in extension storage and synced to open Instagram, Facebook, and Messenger tabs.
Ghostify does not run a tracking server for extension activity and does not collect, sell, or share user activity through the extension runtime. The popup may request Ghostify's public status.json feed to display verification summaries; that request does not include your messages, tab URLs, settings, or social media activity.
Ghostify's privacy controls are designed to work inside your browser.
It does not:
- collect your messages through Ghostify's extension runtime
- require a Ghostify account for these privacy controls
- ask for Instagram, Facebook, or Messenger passwords
- send your browsing activity, messages, tab URLs, or settings to a Ghostify server
See PRIVACY.md for the full privacy policy.
Facebook’s unread UI bug is fixed. If an unread chat still gets marked as read with Hide Seen on, let us know.
Meta changes Instagram, Facebook, and Messenger often. If something stops working, update Ghostify to the latest version, reload the affected tab, and report it if the issue continues.
Requirements:
- Node.js 22.13 or newer
- npm (the version bundled with the supported Node.js release)
Commands:
npm install
npm run build
npm test
npm run ci
npm run package:extension
npm run package:firefoxnpm run build compiles shared runtime bundles into dist/, which is the
Chromium development folder and the source for Firefox package staging.
npm test rebuilds generated extension bundles and runs the regression harness.
npm run ci is the PR-ready check: tests, extension package validation,
Firefox linting, generated bundle drift check, and high-severity dependency audit.
- Architecture — runtime design, manifest model, build flow, debugging flags
- Changelog — release notes (source of truth for every release)
- Contributing — scope policy, change-risk tiers, PR expectations
- QA fixtures — smoke IDs used across release checklists
- Browser distribution — channels, packages, Firefox differences
- Public status guide — how the verification feed is written
- Threat model — trust boundaries and residual risks
- Privacy / Security
- Product / Design — product truth and visual system
Ghostify/
|-- src/ Source modules and platform logic
|-- dist/ Chromium extension and shared packaged assets
|-- browser-targets/ Browser-specific manifest overlays
|-- test/ Regression tests
|-- docs/ QA fixtures and maintainer references
|-- tmp/ Ignored generated staging directories
|-- site/ Public website
|-- build.js ESBuild build script
|-- AGENTS.md Guidance for AI coding agents and contributors
|-- ARCHITECTURE.md Runtime design and build flow
|-- CONTRIBUTING.md Contribution guide
|-- MAINTAINERS.md Maintainer roles and decision process
|-- PRIVACY.md Privacy policy
|-- SECURITY.md Vulnerability reporting policy
|-- SUPPORT.md Where to get help
`-- README.md Project overview
Found a bug, have an idea, want to share feedback, or need to ask a question?
Use the guided form: Help & feedback
Screenshots or short screen recordings are welcome when they help explain the issue, but do not include private messages, credentials, or account-sensitive details. Helpful confirmed reports can be credited in Ghostify release notes and on the website, with permission.
Contributions are welcome. Start with CONTRIBUTING.md for reporting bugs, suggesting features, and submitting code.
Report suspected vulnerabilities through the private process in SECURITY.md. The extension's trust boundaries and residual risks are documented in the threat model.
Ghostify is an independent open-source project. It is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc., Instagram, Facebook, or Messenger.
Use this extension at your own discretion and follow the terms of the platforms you use.
Ghostify is distributed under the MIT License.