wallabag is an open-source, self-hostable read-it-later application designed for users who want to save web articles without ads, pop-ups, or distractions. It extracts clean text and media from any webpage using Graby and php-readability, enabling comfortable, focused reading on any device. Built with PHP and Symfony, it supports deployment on personal servers or via the official wallabag.it hosting service.
The platform integrates with a rich ecosystem including browser extensions (Wallabagger), mobile apps (Android, iOS), e-readers (Kobo, Kindle), RSS readers (Miniflux, FreshRSS), and a full REST API. Its modular architecture and MIT license make it ideal for privacy-conscious users and developers seeking a customizable alternative to proprietary services like Pocket or Instapaper.
What You Get
- Article Extraction Engine - Uses Graby and php-readability to strip ads, pop-ups, and navigation elements, extracting only the core article content for clean, distraction-free reading.
- Cross-Platform Sync - Save articles on your desktop via browser extension and read them later on Android, iOS, Kobo, Kindle, or PocketBook devices with synchronized reading progress.
- Browser Extension (Wallabagger) - One-click saving from Chrome, Firefox, and Safari with automatic content extraction and tagging support.
- REST API - Full-featured API for programmatic access to saved articles, enabling integration with custom apps, automation tools, or third-party readers.
- Data Migration Support - Import saved articles from Pocket, Readability, Instapaper, and Pinboard via built-in import tools with full metadata preservation.
- RSS Reader Integration - Compatible with Miniflux, FreshRSS, Vienna RSS, Tiny Tiny RSS, and others to subscribe to feeds and automatically save articles to your wallabag library.
- Self-Hosted Deployment - Install on your own server using Docker, Symfony, or manual PHP setup with full control over data, privacy, and backups.
- wallabag.it Hosting Service - Official hosted option with €11/year pricing, daily backups, automatic updates, and professional support — no credit card needed for 14-day free trial.
Common Use Cases
- Saving research articles for offline reading - A student saves academic papers from university portals and reads them later on their e-reader without login walls or paywalls.
- Running a personal knowledge base - A developer uses wallabag to archive tutorials, documentation, and blog posts, then tags and searches them later for reference.
- Replacing proprietary read-it-later services - A privacy-focused user migrates from Pocket or Instapaper to wallabag to regain control over their saved content and avoid data tracking.
- Integrating article saving into an RSS workflow - A journalist uses FreshRSS to aggregate news feeds and automatically saves interesting articles to wallabag for in-depth reading during commutes.
Under The Hood
Architecture
- Symfony-based layered architecture with clear separation between Controllers, Services, Entities, and Repositories, ensuring modularity and maintainability
- Dependency injection is deeply integrated, enabling loose coupling and testability through constructor-based injection of core services and external producers
- Event-driven import workflows leverage Redis and RabbitMQ to decouple HTTP request handling from background processing, ensuring scalability and responsiveness
- Custom ParamConverters extend Symfony’s routing system to handle authenticated user resolution via URL tokens, demonstrating elegant framework extension
- Frontend assets are managed via Symfony Encore with Webpack, maintaining a clean, modular pipeline for JavaScript and CSS
- Doctrine ORM with explicit mappings, RulerZ for dynamic rule evaluation, and FormFilterBundle for complex queries create a mature, flexible data layer
Tech Stack
- PHP 8.2+ backend powered by Symfony with Doctrine ORM, DBAL, and Migrations for robust data persistence and schema management
- Key Symfony bundles including FOSUserBundle, FOSRestBundle, and NelmioApiDocBundle provide comprehensive authentication, API, and documentation capabilities
- Modern frontend tooling with Webpack Encore, Babel, Sass, and PostCSS, enhanced by Stimulus and MaterializeCSS for lightweight, interactive UI components
- Docker-based development and production environments with optional PostgreSQL/MariaDB and Redis support ensure consistent deployment across environments
- Comprehensive testing with PHPUnit and Codecov integration, covering unit, integration, and functional scenarios with mocked dependencies
- Frontend interactivity enhanced by Highlight.js, Mousetrap, and QRCode libraries for rich user experiences without heavy frameworks
Code Quality
- Extensive test coverage across all layers with well-structured test suites, mocked dependencies, and stateful test setups
- Strong type safety and consistent use of constructor injection with readonly properties improve reliability and reduce side effects
- Robust error handling via Symfony’s exception system and form validation, though custom exceptions are not extensively used
- Clear, consistent naming conventions aligned with Symfony standards improve readability and onboarding
- Deep testing of edge cases in security voters, import pipelines, and locale handling demonstrates thorough domain understanding
- Linting and caching strategies are well-integrated, ensuring predictable behavior in test and production contexts
What Makes It Unique
- Dynamic content filtering via RulerZ allows users to define custom auto-archiving rules based on host patterns and operators, eliminating hardcoded logic
- Native Pocket HTML import parses exported files directly, preserving tags and metadata without relying on external APIs
- Stimulus controllers enable lightweight, component-based UI interactions for tagging, highlighting, and tab management without full frontend frameworks
- Abstracted IgnoreOriginRuleInterface supports polymorphic rule types with shared validation and persistence, promoting extensibility
- Built-in HTML highlighting integrated into the import pipeline enhances readability without external dependencies
- Pluggable import system with async producer-consumer architecture supports multiple formats and scales seamlessly