# wallabag

Self-hosted read-it-later app that saves and cleans web articles, with an OAuth2 REST API.

wallabag saves web pages for later reading and extracts the article text without clutter. Articles can be tagged, annotated, archived and exported, and apps exist for Android, iOS and the browser. The Builder documents an OAuth2 REST API that covers entries, tags and annotations.

Alternative to: Pocket, Instapaper, Pinboard

- Capabilities: adaptable, operable
- Vertical: notes-knowledge
- Shape: product
- Form factor: web-app
- Execution model: deterministic
- Provenance: unknown (recorded, never ranked)
- Repo: https://github.com/wallabag/wallabag (MIT), 13053 stars, last commit 2026-11-06
- Last activity: 2026-11-06
- Page: apps/wallabag--wallabag.html
- JSON: apps/wallabag--wallabag.json

## Use it when

- you want your agent to save links you send it and tag them for later reading
- you want a private reading list your own scripts can read, annotate and export

## Gotchas

- An API client id and secret are created once in the web UI on 2.6.15; tokens are then issued with username and password through the OAuth endpoint. The wallabag:api-client:create command exists only on master so far
- make install checks out the latest tag and needs PHP, Composer and a virtual host; the Docker image is the single-container route
- master is moving to WALLABAG_* environment variables in place of parameters.yml; the 2.6.15 release and its Docker image do not read them
- wallabag.it has a 14-day free trial; 11 EUR a year is the one-year plan, and a 3-month plan is 4 EUR

## Editions

- Self-hosted: Free, open source
  - source: git clone https://github.com/wallabag/wallabag.git && cd wallabag && make install
  - container: docker run -v wallabag-data:/var/www/wallabag/data -v wallabag-images:/var/www/wallabag/web/assets/images -p 8080:80 -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost:8080" wallabag/wallabag
- wallabag.it: €11 per year, closed source
  - hosted: https://wallabag.it

## Adaptable: make it yours

Effort: config-only (9 things to edit)

On the 2.6.15 release, app/config/parameters.yml (or SYMFONY__ENV__ variables in the Docker image) sets the domain, language, instance name and whether people can register. app/config/wallabag.yml sets defaults such as items per page and reading speed. A web/custom.css file restyles every page of the instance. Tagging rules, site credentials and reading settings are per-user settings in the web UI.

- Env vars: SYMFONY__ENV__DOMAIN_NAME, SYMFONY__ENV__SERVER_NAME, SYMFONY__ENV__LOCALE, SYMFONY__ENV__FOSUSER_REGISTRATION, SYMFONY__ENV__DATABASE_DRIVER, SYMFONY__ENV__MAILER_DSN
- Config files: app/config/parameters.yml, app/config/wallabag.yml, web/custom.css
- Prompt files: none
- Accounts you'll need: none

## Operable: what an agent can drive

Operability: official. Interface: api at https://doc.wallabag.org/developer/api/oauth/ (published by the builder, both).

### Reach (partial coverage)

- Save a web page by URL: reachable. REST POST /api/entries
- List, search and read saved articles: reachable. REST GET /api/entries, GET /api/entries/{entry}, GET /api/search
- Archive, star and edit an article: reachable. REST PATCH /api/entries/{entry}
- Refetch an article's content: reachable. REST PATCH /api/entries/{entry}/reload
- Delete articles: reachable. REST DELETE /api/entries/{entry}
- Tag articles and manage tags: reachable. REST POST /api/entries/{entry}/tags, GET /api/tags, DELETE /api/tags/{tag}
- Highlight and annotate articles: reachable. REST /api/annotations/{entry} (GET, POST), /api/annotations/{annotation} (PUT, DELETE)
- Export an article: reachable. REST GET /api/entries/{entry}/export
- Manage tagging rules, site credentials and ignore-origin rules: not reachable. Only GET /api/taggingrule/export exists in the API controllers on 2.6.15 and master; site credentials and ignore-origin rules are web controllers.
- Import from other services: not reachable. No import route in the API controllers on 2.6.15 or master. Import is a web form or the bin/console wallabag:import command on a self-hosted server.

## Code stack

- Languages: PHP, JavaScript
- Frameworks: Symfony
- Package manager: composer, yarn
- Database: SQLite, MySQL, MariaDB, PostgreSQL
- Hosting target: php, docker

## Evidence and confidence

- formFactor: README: web application installed with make install, or the wallabag/wallabag image (confidence 0.95)
- executionModel: no model in the stack (confidence 0.95)
- operability: API controllers read on tag 2.6.15 and on master; doc.wallabag.org/developer/api/oauth/ describes client creation and password-grant tokens. Same project publishes API and docs. (confidence 0.9)
- effort: doc.wallabag.org/admin/custom_css/ documents web/custom.css for instance-wide styling (base.html.twig loads it on 2.6.15); doc.wallabag.org/admin/parameters/ documents parameters.yml; app/config/wallabag.yml read on 2.6.15. scripts/install.sh checks out the latest tag, so the WALLABAG_* names in master's .env do not apply to an install. (confidence 0.8)
- editions: wallabag.it/en/pricing/ shows 4 EUR for 3 months, 11 EUR for 1 year, 30 EUR support plan; footer names Nicolas Lœuillet, the project's maintainer. Docker command from doc.wallabag.org/admin/installation/installation/. (confidence 0.9)
- active: commits on 2026-11-06 by the maintainers; release 2.6.15 on 2026-10-28
- alternativeTo: wallabag.it page title: alternative to Pocket, Instapaper and Pinboard
- reach:  (confidence 0.9)

## Sources

- https://wallabag.org (sourcing:notes-knowledge:curated)
- https://doc.wallabag.org/developer/api/oauth/ (analysis)
- https://wallabag.it/en/pricing/ (verification)
