Welcome to the 0.30.0 release of Karakeep and happy new year! This release comes with "2025 wrapped" (a bit late), PDF archives, new reader settings, avatars, reddit crawling improvements, and more! Huge thanks to our contributors for this release @esimkowitz, @Moondragon85, @rzxczxc, @colado, @Yeraze, @eriktews and everyone who shipped code, triaged bugs, or shared feedback for this release.
If you enjoy using Karakeep, consider supporting the project here โ๏ธ or via GitHub here.
And in case you missed it, we now have a โ๏ธ managed offering โ๏ธ for those who don't want to self-host. We're in public beta now and you can signup here ๐.
New Features ๐
2025 Wrapped is here to celebrate your year in Karakeep (#2322).
PDF archives
Archive bookmarks as PDFs, generated automatically during crawling or on-demand (#2309).
Set CRAWLER_STORE_PDF=true to enable auto PDF archiving.
Unified reader settings (font, size, etc) across all devices with per-device overrides (#2230). By @esimkowitz!
Better metadata extraction:
Reddit posts should now be crawled correctly, and banners should be fetched more reliably.
Fixed YouTube thumbnail and author extraction.
Fixed Amazon product image extraction (where it was sometimes showing the prime logo) (#2204, #2108). By @Yeraze
Upload custom user avatars for more personal profiles (#2296).
AI Setting customization:
Customize tag styling (case, separators, language) per user. It's highly recommended to set the tag style for more consistent tags (#2312).
Per-user toggles to disable auto-tagging and/or auto-summarization (#2275).
Others:
Import libraries from Matter with full export support (#2245). By @Moondragon85
Bulk remove bookmarks from lists (#2279).
Add a new rule condition to rule engine: "URL Does Not Contain" (#2280).
Configure an OpenAI proxy via OPENAI_PROXY_URL (#2231). By @rzxczxc
Added is:broken search qualifier to show links that failed crawling (#2225).
Edit list now in the mobile app (#2310). By @colado
UX Improvements โจ
Our docs got a facelift! The docs got some styling, the pages got re-organized and we now have a "Using Karakeep" section that explains some of the core concepts of Karakeep.
Replace bookmark banners and download attachments directly from the drop down menu (#2328).
Sidebar scrollbar looks cleaner, and pending list invites show as a badge in the sidebar.
Bookmark edit dialog now includes notes.
Bookmark owner avatars now show up in collaborative lists.
Mobile UI/UX improvements:
Fixed title on mobile to be at most 2 lines long.
Mobile settings screens should now feel more native (#2307).
OLED-friendly colors in the Android app matching the colors of the ios app (#1958).
Toasts on iOS now appear correctly above the open modals (#2320). By @colado
Shared lists now appear in a dedicated subsection on mobile.
Adding a bookmark to a list now shows a spinner during loading (#2283).
Server version now appears in mobile settings (#2276).
Fixed the confusing "tick button" beside the server address during login.
Fixes ๐ง
Fixed missing db indicies that was causing slow bookmark queries (#2246, #2287).
Improved Ollama summaries by using the generate endpoint (#2324). By @eriktews
Fixed HTML bookmark imports failing on empty folder names (#2300).
Fixed non-link bookmarks stuck in pending summarization (#1605).
Improved tagging prompts and error-page detection.
Reject spoofed content types on file uploads.
Preserve failure counts when rescheduling rate-limited domains (#2303).
Fixed duplicate backdrop buttons in reader view (#2234). By @colado
RSS feed fetching is now spread over the hour (#2227).
Asset preprocessing worker timeout is now configurable (91784cd2).
Fixed bypassing email verification in apiKey.exchange.
Added limits on number of rss feeds and webhooks per user configurable by admins.
Fixed a bug where failed crawling leave bookmarks as pending tagging in the admin dashboard.
For Developers ๐ ๏ธ
OpenTelemetry integration with OTLP exporter (#2318, #2321).
CLI can list users for admins.
We're now defaulting to Node.js 24 (the current LTS).
Breaking: In bookmark APIs includeContent now defaults to false. This change was announced a couple months ago, and is taking effect in this release.
Community Projects ๐ก
Karakeep integration for Home Assistant (#2196) by @sli-cka. Get it from here.
Screenshots ๐ธ
Wrapped 2025
Reader Settings
.
AI Settings
Upgrading ๐ฆ
To upgrade:
If you're using KARAKEEP_VERSION=release, run docker compose pull && docker compose up -d.
If you're pinning it to a specific version, bump the version and then run docker compose pull && docker compose up -d.
All Commits
i18n: fix en_US translation - @MohamedBassem in d472a3a1
fix: fix wrapped feature to only show bookmarks in 2025 - @MohamedBassem in 4077e286
i18n: Sync weblate translations - Weblate in 401ea6a9
chore: drop the experimental tag from the rule engine - @MohamedBassem in bf9d6105
fix: show a toast during banner upload - @MohamedBassem in 9555f409
fix: don't switch the bookmark back to pending on recrawl - @MohamedBassem in 79400d04
fix: use the Ollama generate endpoint instead of chat (#2324) - @eriktews in e8c79f29
feat: add replace banner and attachment download (#2328) - @MohamedBassem in 3d652eee
feat: Add bulk remove from list (#2279) - @MohamedBassem in 7a76216e
feat: add "URL Does Not Contain" condition to rule engine (#2280) - @MohamedBassem in b20ba9cf
feat: 2025 wrapped (#2322) - @MohamedBassem in a0b4a26a
chore: worker tracing (#2321) - @MohamedBassem in 7ab7db8e
feat(landing): add corporate pricing - @MohamedBassem in d852ee1a
fix(mobile): mobile modal UI issues (#2320) - @colado in a43d375f
ci: fix tests - @MohamedBassem in 9d6b1282
feat: change default for tag style to be title case with spaces - @MohamedBassem in 9098a5a6
fix: more tagging tweaks - @MohamedBassem in c1cbaa8a
build: fix broken CI - @MohamedBassem in a5ce977d
fix: change prompt to better recognize error pages - @MohamedBassem in f5a5c14e
refactor: reduce duplication in compare-models tool - @MohamedBassem in f00287ed
chore: add tracing for email functions - @MohamedBassem in ba8d84a5
feat(mobile): create new list edit screen (#2310) - @colado in 30fa06fe
feat: Add open telemetry (#2318) - @MohamedBassem in 5537fe85
fix: reset tagging status on crawl failure (#2316) - @MohamedBassem in f7920bdc
feat: add the ability to specify a different changelog version - @MohamedBassem in 10820761
fix: remove duplicate mobile backdrop button in reader view (#2234) - @esimkowitz in 3f44e319
fix(landing): fix cloud banner on mobile - @MohamedBassem in 23f28530
refactor: add suspense boundary in sidebar layout - @MohamedBassem in 3c3d8685
feat(mobile): make the settings menu look more native (#2307) - @MohamedBassem in 6ee48ffb
feat(web): better looking scrollbar in the sidebar - @MohamedBassem in f7523a21
feat(mobile): use oled friendly colors for android app. fixes #1958 - @MohamedBassem in e800d744
refactor: migrate toasts to sonner - @MohamedBassem in 173fb99a
feat: add customizable tag styles (#2312) - @MohamedBassem in af3010ab