Tiny RSS

tt-rss.org
Tiny RSS

A web-based news feed reader and aggregator, supporting RSS/Atom feeds. It's free, open source, and offers a customizable and self-hostable platform for managing your news feeds.

Open Source

Tiny RSS Source Code

Author

tt-rss

Description

A free, flexible, open-source, web-based news feed (RSS/Atom/other) reader and aggregator.

#rss#rss-aggregator#rss-generator#tt-rss#ttrss

Homepage

Repository

  • LicenseGPL-3.0
  • Created03 Oct 25
  • Primary languagePHP
  • Size138,197 KB
  • Stars869
  • Forks88
  • Watchers869

Language Usage

Language Usage

Project Health

  • Last commit5 days ago
  • Open issues34

Recent Commits

  • supahgreg(24 Oct 26)

    Properly restrict generated feed access by 'is_cat'. GHSA-jp5f-hphf-vrwp

  • supahgreg(24 Oct 26)

    Minor tweak to 'Feeds::_get_update_intervals()'

  • supahgreg(22 Oct 26)

    Bump Alpine to 3.24.3, nginx to 1.31.8. * https://alpinelinux.org/posts/Alpine-3.21.9-3.22.7-3.23.7-3.24.3-released.html * https://nginx.org/en/CHANGES

  • Greg(18 Oct 26)

    Centralize purge and update intervals, validate during subscribe. (#464) * Centralize purge and update intervals, validate during subscribe. * Add 'getFeedUpdateIntervals' to the API. * Add missing return type info for new 'Feed intervals' functions.

  • supahgreg(17 Oct 26)

    Bump nginx to 1.31.7

  • Dawid Wróbel(17 Oct 26)

    Allow setting update interval when subscribing through the API (#463) subscribeToFeed in the API does not allow to set update interval right now, so feeds are added with user's default interval. Accept an optional update_interval parameter, reject values below -1 with INCORRECT_USAGE, and raise the API level to 24.

  • Shai(17 Oct 26)

    Don't pass curl options when Guzzle will use its stream handler (#462) Guzzle only uses a curl handler when libcurl is at least 7.34.0 with SSL support (and a few constants are defined); otherwise it falls back to the stream handler, which rejects the 'curl' request option. using_curl() only checked that the curl functions exist, so fetches failed on hosts with an older libcurl such as CentOS 7's 7.29.0. Fixes #426 Co-authored-by: Shaisolaris <[email protected]>

  • dependabot[bot](17 Oct 26)

    GitHub Actions: Bump actions/setup-node from 7.0.0 to 7.1.0 (#461) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 7.0.0 to 7.1.0. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/820762786026740c76f36085b0efc47a31fe5020...949feb2413d6458794dcd2491c4babbbce0c15c1) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](17 Oct 26)

    GitHub Actions: Bump shivammathur/setup-php from 2.37.2 to 2.40.0 (#460) Bumps [shivammathur/setup-php](https://github.com/shivammathur/setup-php) from 2.37.2 to 2.40.0. - [Release notes](https://github.com/shivammathur/setup-php/releases) - [Commits](https://github.com/shivammathur/setup-php/compare/f3e473d116dcccaddc5834248c87452386958240...eb7c497e18156a6bbabfef1d3a82760b9eda3962) --- updated-dependencies: - dependency-name: shivammathur/setup-php dependency-version: 2.40.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Greg(02 Oct 26)

    Merge pull request #456 from tt-rss/weblate-integration Translations update from Hosted Weblate

  • Dony Wibowo(30 Sept 26)

    Translated using Weblate (Indonesian) Currently translated at 100.0% (728 of 728 strings) Translation: TinyTinyRSS/webui Translate-URL: https://hosted.weblate.org/projects/tt-rss/webui/id/

  • dependabot[bot](02 Oct 26)

    npm: bump the development-dependencies group with 4 updates (#455) Bumps the development-dependencies group with 4 updates: [eslint](https://github.com/eslint/eslint), [globals](https://github.com/sindresorhus/globals), [less](https://github.com/less/less.js) and [stylelint](https://github.com/stylelint/stylelint). Updates `eslint` from 10.9.1 to 10.11.0 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/compare/v10.9.1...v10.11.0) Updates `globals` from 17.11.0 to 17.12.0 - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](https://github.com/sindresorhus/globals/compare/v17.11.0...v17.12.0) Updates `less` from 4.9.0 to 4.9.1 - [Release notes](https://github.com/less/less.js/releases) - [Changelog](https://github.com/less/less.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/less/less.js/compare/v4.9.0...v4.9.1) Updates `stylelint` from 17.14.1 to 17.15.0 - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/17.14.1...17.15.0) --- updated-dependencies: - dependency-name: eslint dependency-version: 10.11.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: globals dependency-version: 17.12.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: less dependency-version: 4.9.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: stylelint dependency-version: 17.15.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Greg(30 Sept 26)

    Merge pull request #453 from tt-rss/weblate-integration Translations update from Hosted Weblate

  • TonyRL(30 Sept 26)

    Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (728 of 728 strings) Translation: TinyTinyRSS/webui Translate-URL: https://hosted.weblate.org/projects/tt-rss/webui/zh_Hant/

  • Hosted Weblate user 54392(30 Sept 26)

    Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (728 of 728 strings) Translation: TinyTinyRSS/webui Translate-URL: https://hosted.weblate.org/projects/tt-rss/webui/zh_Hans/

  • LaurentC(29 Sept 26)

    Translated using Weblate (French) Currently translated at 100.0% (728 of 728 strings) Translation: TinyTinyRSS/webui Translate-URL: https://hosted.weblate.org/projects/tt-rss/webui/fr/

  • Greg(29 Sept 26)

    Merge pull request #452 from tt-rss/weblate-integration Translations update from Hosted Weblate

  • Hosted Weblate(29 Sept 26)

    Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: TinyTinyRSS/webui Translate-URL: https://hosted.weblate.org/projects/tt-rss/webui/

  • Dony Wibowo(28 Sept 26)

    Translated using Weblate (Indonesian) Currently translated at 100.0% (727 of 727 strings) Translation: TinyTinyRSS/webui Translate-URL: https://hosted.weblate.org/projects/tt-rss/webui/id/

  • LaurentC(28 Sept 26)

    Translated using Weblate (French) Currently translated at 100.0% (727 of 727 strings) Translation: TinyTinyRSS/webui Translate-URL: https://hosted.weblate.org/projects/tt-rss/webui/fr/

  • Greg(29 Sept 26)

    Merge pull request #451 from tt-rss/GHSA-9f8c-5cv6-jv5x Improve Database Updater session validation, require reauth on access level changes (GHSA-9f8c-5cv6-jv5x)

  • supahgreg(29 Sept 26)

    Rebase translations

  • supahgreg(29 Sept 26)

    Validate the session in 'dbupdate'. GHSA-9f8c-5cv6-jv5x

  • supahgreg(29 Sept 26)

    Mark session invalid on access level changes.

  • Tony(25 Sept 26)

    feat: add support for filtering entries by feed title (#449)

  • Johannes Larsen(25 Sept 26)

    Use idempotent mark/publish RPCs instead of toggle RPCs (#435) (#448) Because both the toggleMark/Pub onclick actions and the swipe-to-read touchend action triggers the Headlines.row_observer callback. This results in 2 concurrent syncModified routines for the same change. When those actions were to toggle the states, the 2nd one undid the 1st one. Instead have them both set the new state instead of asking the DB to toggle it, which is idempotent, so it works fine even if both does it. Note that since the mobile app still sends 2 RPCs for the same change, it will still trigger these plugin hooks twice: * HOOK_ARTICLES_MARK_TOGGLED * HOOK_ARTICLES_PUBLISH_TOGGLED Those plugins does not get information about whether it mark/publish flag was set/cleared, so plugins that are not idempotent would still have #435 issues. It would be fair to assume plugins out there would query the DB or something for the latest mark/publish state instead of trying to accurately keep a separate state synchronized with the DB, so these changes would probably not make it any worse for the plugins.

  • dependabot[bot](25 Sept 26)

    GitHub Actions: Bump docker/build-push-action from 7.3.0 to 7.4.0 (#446) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 7.3.0 to 7.4.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/53b7df96c91f9c12dcc8a07bcb9ccacbed38856a...c3c9e263c25d99ce0380d002d59b67737d91b0dc) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-version: 7.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](25 Sept 26)

    GitHub Actions: Bump docker/setup-qemu-action from 4.2.0 to 4.4.0 (#447) Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 4.2.0 to 4.4.0. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/96fe6ef7f33517b61c61be40b68a1882f3264fb8...99012661954931238ded8c8b007157a8430204e1) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-version: 4.4.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • dependabot[bot](25 Sept 26)

    GitHub Actions: Bump docker/setup-buildx-action from 4.3.0 to 4.4.1 (#445) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 4.3.0 to 4.4.1. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/37fe631027851001ddb9b187196cc803df7f5f0e...f87e5991a6d7451dcb8d9637bfbc97413f497069) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-version: 4.4.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • Greg(18 Sept 26)

    Merge pull request #444 from tt-rss/base-images-bump Bump to Alpine 3.24.2, nginx 1.31.6.

Tiny RSS Security

Security Advisories (3)

  • mediumPatchedCVSS 6

    GHSA-9f8c-5cv6-jv5xRevoked administrator sessions still execute the Database Updater via public.php (session not revalidated on that entry point)

  • mediumPatchedCVSS 4.3

    CVE-2026-81511Tiny Tiny RSS URL validation permits internal-address SSRF bypasses

  • highPatchedCVSS 8

    CVE-2026-81510Stored cross-site scripting via iframe srcdoc in YouTube-whitelisted feed content

Tiny RSS Website

Website

Home | Tiny Tiny RSS

Tiny Tiny RSS (tt-rss) is a free, flexible, open-source, web-based news feed (RSS/Atom/other) reader and aggregator.

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address185.199.108.153
  • Hostnamecdn-185-199-108-153.github.com
  • LocationFrancisco,Indiana,United States of America,NA
  • ISPGitHub Inc.
  • ASNAS54113

Associated Countries

  • USUS

Safety Score

Website marked as safe

100%

Trackers

No known trackers found

Blacklist Check

tt-rss.org was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

Tiny RSS Docker

Container Info

tt-rss

Tiny Tiny RSS is an open source web-based news feed (RSS/Atom) reader and aggregator, designed to allow you to read news from any location, while feeling as close to a real desktop application as possible.

#Other

View on DockerHub

lunik1/tt-rss:latest

Run Command

docker run -d \
  -p 80/tcp \
  -e PUID=${PUID} \
  -e PGID=${PGID} \
  -v /portainer/Files/AppData/Config/tt-rss:/config \
  --restart=unless-stopped \
  lunik1/tt-rss:latest

Compose File

version: 3.8
services:
  tiny-tiny-rss:
    image: "lunik1/tt-rss:latest"
    ports:
      - 80/tcp
    environment:
      PUID: 1000
      PGID: 100
    volumes:
      - "/portainer/Files/AppData/Config/tt-rss:/config"
    restart: unless-stopped

Environment Variables

  • Var NameDefault
  • PUID1000
  • PGID100

Port List

  • 80/tcp

Volume Mounting

  • Container PathHost Bind
  • /config/portainer/Files/AppData/Config/tt-rss

Tiny RSS Reviews

More News Readers

⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submiting a pull request on GitHub.
Or submit an entry here

About the Data: Tiny RSS

Change History

Edit Tiny RSS Data

You can edit Tiny RSS's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

Origin Data

Modify Data

API

You can access Tiny RSS's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/tiny-rss

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share Tiny RSS

Help your friends compare News Readers, and pick privacy-respecting software and services.
Share Tiny RSS and Awesome Privacy with your network!