Screenity is a free, privacy-focused screen and camera recording tool built as a Chrome extension for users who need to create tutorials, product demos, or feedback videos without compromising their data. It eliminates the need for account creation, cloud dependency, or time limits, making it ideal for educators, developers, and remote teams seeking full control over their recordings. Built with JavaScript and leveraging FFmpeg for video processing, Screenity supports self-hosting and offline use, while its extension architecture ensures all processing happens locally on the user’s device.
The project is open source under GPLv3, with optional Pro features hosted on EU-based infrastructure for users needing cloud storage, multi-scene editing, and link sharing. The core extension remains completely free and does not send any data to servers, aligning with strict privacy standards like GDPR.
What You Get
- Unlimited screen and camera recording - Record any tab, application, desktop, or camera feed with no time limits or watermarks.
- Real-time annotation tools - Draw freehand, add text, arrows, and shapes directly on your screen during recording.
- AI-powered camera background blur - Use machine learning to blur or replace your camera background for professional-looking recordings.
- Cursor and click highlighting - Automatically emphasize mouse movements and clicks to guide viewer attention.
- Audio control with push-to-talk - Record microphone or system audio, with a toggle to mute/unmute on demand.
- Built-in video editor - Trim, crop, and adjust audio levels directly in the extension without needing external software.
- Google Drive export integration - Save recordings directly to Google Drive to generate shareable links without signing up for a cloud service.
- Self-hosting support - Run the extension entirely offline by loading the unpacked Chrome extension from local files.
- Countdown timer and UI hiding - Set a pre-recording countdown and hide extension UI elements for cleaner captures.
- Blur sensitive content - Pixelate or blur any part of the screen during recording to protect private data like passwords or documents.
Common Use Cases
- Creating software tutorials - A developer records their code editor and terminal to explain a bug fix, using annotations and cursor highlights to guide viewers.
- Remote team feedback - A product manager records a screen walkthrough of a Figma design with voiceover and shares it via Google Drive link without requiring recipients to sign up.
- Privacy-conscious educators - A teacher records a lecture on a sensitive topic using Screenity’s offline mode to ensure student data never leaves their device.
- Content creators on restricted networks - A YouTuber in a corporate environment uses Screenity to record demos without installing third-party software or violating IT policies.
Under The Hood
Architecture
- Modular extension architecture with distinct page-based entry points (Background, Content, Recorder, Editor) enabling clear separation of concerns across browser extension components
- Service-worker-based background script using message-passing patterns to decouple UI from core logic, ensuring scalability and maintainability
- React-based UI components leverage context for state management across isolated pages, avoiding prop drilling in a multi-page extension environment
- Dependency injection via environment variables and Webpack aliasing allows dynamic feature toggling without code duplication
- Webpack multi-entry configuration generates isolated HTML bundles for each extension page, enforcing clean runtime boundaries
- Heavy reliance on third-party libraries for UI and media handling reflects a pragmatic, lightweight approach rather than custom framework development
Tech Stack
- Electron-based desktop application built with React 18 and TypeScript, using Webpack for bundling background, content, and UI scripts
- Comprehensive UI component library built on Radix UI primitives for accessible, themable controls including dropdowns, tooltips, and sliders
- Media pipeline integrates Fabric.js for canvas manipulation, MediaBunny for screen capture, and WebCodecs API for high-fidelity processing
- Build system combines Babel, Sass, and Webpack Dev Server to support hot-reloading across multiple entry points including offscreen workers
- State persistence handled via indexedDB through localforage, with Sentry for production error monitoring
- Deployment automates extension packaging with ZIP generation, patch-package for dependency fixes, and environment-specific secrets injection
Code Quality
- Extensive use of generic console.error logging without structured error classes or diagnostics, leading to opaque failure modes
- Absence of unit or integration tests despite complex functionality in recording, canvas, and UI modules
- Inconsistent naming conventions across components, utilities, and Chrome APIs reduce code predictability and maintainability
- Heavy use of mutable state via refs and direct DOM/Canvas manipulation increases risk of race conditions and debugging complexity
- No type safety enforced through TypeScript or PropTypes, making data contracts and flow difficult to verify
- Linting and formatting standards are unenforced, resulting in inconsistent indentation, unused imports, and unstructured error handling
What Makes It Unique
- Native browser-level screen and system audio capture using Chrome’s tabCapture and desktopCapture APIs with intelligent fallbacks, eliminating external tool dependencies
- Real-time canvas annotation with an intelligent eraser that preserves layer integrity through per-pixel hit detection
- Cross-platform audio recording warnings with context-aware, OS-adaptive UI overlays that require no external dependencies
- Offscreen audio processing workers with isolated rendering contexts to maintain performance during high-fidelity recording
- Unified extension architecture that synchronizes state across content scripts, background services, and UI components via reactive context and messaging
- In-browser editor with composable UI components enabling pixel-perfect region selection and real-time drawing within a constrained extension environment