# wallabag: Self-Hosted Read-Later with Content Extraction

> wallabag is a self-hosted PHP application that saves web pages for later reading by extracting article text and stripping distractions. It runs on your own server and ships with Android, iOS, and browser extension clients.

**wallabag/wallabag** — wallabag is a self hostable application for saving web pages: Save and classify articles. Read them later. Freely.

- Repository: https://github.com/wallabag/wallabag
- Website: https://wallabag.org
- Stars: 12,986 · Forks: 896
- Language: PHP
- License: MIT
- Published: 2026-08-04 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/wallabag-wallabag

## What wallabag Does and Why Self-Hosting Matters Here

wallabag saves web pages for later reading by extracting the article body and discarding advertisements, cookie banners, and navigation. The result is a clean reading view stored on infrastructure you control. The application is written in PHP and runs on a server you host, which means your reading list and article content never leave your environment. For readers who find cloud read-later services uncomfortable because they index what you read, wallabag is a direct alternative. The project started in 2013. The README makes the lowercase-only spelling a firm rule: the name is always wallabag, not Wallabag or WallaBag. The application can be installed directly on a server using the provided Makefile, or via Docker. A hosted option also exists at wallabag.it for users who want the software without operating their own server.

## Content Extraction and the Graby Pipeline

wallabag extracts article content using three components listed in the README: Graby, php-readability, and ftr-site-config. Graby handles the HTTP fetching and hands off content to php-readability for extraction. The ftr-site-config repository from fivefilters provides site-specific extraction rules. When a site's default HTML structure makes automatic extraction unreliable, an ftr-site-config rule can specify which CSS selectors or XPath expressions to use. This layered approach means the quality of content extraction varies by site: pages with semantic HTML and article tags extract cleanly, while pages that rely heavily on JavaScript for rendering may produce incomplete results. The README notes that content extraction is a dependency on these three libraries rather than a built-in feature, which makes the quality of extraction dependent on how well those libraries handle a given site's markup.

## Installing wallabag on Your Own Server

The README points to the installation documentation at doc.wallabag.org for a complete list of server requirements. The basic installation uses git and GNU make.

```bash
git clone https://github.com/wallabag/wallabag.git
cd wallabag && make install
```

If the system's default make is not GNU make, the README instructs you to use gmake install instead. After installation, you configure a virtual host pointing to the application's web/ directory. The repository includes a compose.yaml file for Docker-based deployment. The Docker Compose service uses a PHP container with environment variables for the base URL, session cookie names, and trusted device cookie names. The repository's package.json specifies Node.js 24 or newer as a requirement for asset building. The wallabag version in package.json is 2.6.0, and recent releases include 2.6.14 from 2025-10-07.

## Docker Compose Deployment

The compose.yaml file in the repository defines a PHP service with several environment variables. WALLABAG_BASE_URL sets the URL where wallabag is served. The database defaults to SQLite but can be switched by setting DATABASE_URL in .env.local. The Docker image mounts volumes for assets, data, and the .cache directory. Running wallabag via Docker Compose requires copying docker/php/env.example to docker/php/env and filling in the necessary values. The README notes that switching from SQLite to another database requires converting existing databases offline before enabling encryption. The Makefile in the repository coordinates Composer, PHP, and Yarn commands, automatically detecting whether Docker Compose is running and routing commands to the appropriate context. This means the same Makefile targets work for both local and Docker-based development.

## Mobile Apps, Browser Extensions, and KOReader

wallabag provides companion applications documented in the README. An Android app lives at github.com/wallabag/android-app. An iOS app lives at github.com/wallabag/ios-app. A browser extension called wallabagger lives at github.com/wallabag/wallabagger and handles saving pages directly from the browser. A GNOME Linux application called read-it-later also supports wallabag as a backend, though the README notes it is not maintained by the wallabag project. KOReader, an e-reader application for e-ink devices, has a plugin that syncs with wallabag, allowing articles to be read on Kindle or other e-ink hardware. The README points to github.com/wallabag/wallabag/wiki/wallabag-ecosystem for a comprehensive listing of third-party integrations. This ecosystem of clients means wallabag can be used from essentially any device without requiring a web browser.

## Limitations of wallabag

wallabag's content extraction fails silently for pages that require JavaScript rendering, since it fetches static HTML. The extracted content may be incomplete for single-page applications or paywalled articles. The application does not provide an RSS feed for subscriptions, reading discovery features, or social sharing. Self-hosting requires maintaining the server, handling PHP version upgrades, and managing the database. The documentation lives at doc.wallabag.org, which is separate from the repository, and keeping the application updated means tracking releases manually. Translation is handled via Weblate, so some interface strings may be incomplete in less-maintained languages. The README does not document a rollback process for failed upgrades, and the RELEASE_PROCESS.md file in the repository suggests releases are handled by the core team rather than through automated tooling.

## wallabag versus Instapaper and Readeck

Instapaper is a cloud-hosted read-later service operated by a third party. It provides polished iOS and Android clients and stores articles on Instapaper's infrastructure. wallabag is a self-hosted application where you control both the server and the data. If data ownership is not a concern, Instapaper requires no server administration. Readeck is another self-hosted read-later application mentioned in the wallabag search data. The README does not compare wallabag to Readeck directly. The primary difference for a self-hoster choosing between them is the technology stack and available clients: wallabag is PHP-based with a mature ecosystem of native mobile apps, while Readeck is a newer Go-based application. wallabag's longer history means more integrations exist in the surrounding ecosystem.

## Conclusion

wallabag is the right tool for readers who want a self-hosted, ad-free read-later service without trusting a third party with their reading history. It is the wrong choice if you want a hosted service with zero maintenance overhead or if your priority is social features and discovery. Before deploying, check the PHP and database requirements in the installation documentation at doc.wallabag.org, and confirm that your server or container environment meets them.

## FAQ

### How does wallabag work?

wallabag saves a web page by fetching its HTML and passing it through Graby and php-readability to extract the article body. The cleaned text is stored in wallabag's database on your server, where it can be read at any time without revisiting the original URL.

### Is wallabag free?

The wallabag software is released under the MIT licence and available at no cost. You can run it on your own server for free. A hosted service at wallabag.it is also available for users who do not want to operate their own server, though that service has its own pricing.

### Can wallabag be self-hosted?

Yes, self-hosting is wallabag's primary design. You clone the repository, run make install, configure a virtual host, and the application runs on your own server. Docker Compose deployment is also supported via the compose.yaml file in the repository.

### How do I install wallabag?

Clone the repository with git clone https://github.com/wallabag/wallabag.git, then run cd wallabag && make install. After installation, configure a virtual host as described in the installation documentation at doc.wallabag.org. A Docker Compose option is also available using the compose.yaml file in the repository.

## Sources

- [Official documentation](https://wallabag.org)
- [Official README](https://github.com/wallabag/wallabag#readme)
- [Project repository](https://github.com/wallabag/wallabag)
- [Release notes](https://github.com/wallabag/wallabag/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/wallabag-wallabag
