HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
phiresky
ripgrep-all
Rust2019–2026
phiresky / ripgrep-all

ripgrep-all

rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc.

35Distinct people
42Mentions
0Explicit recommenders
9.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year42 dated mentions

Observed mentions: 2019-06-16 21:45:15 UTC to 2026-03-24 18:47:45 UTC.

02468102019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 10 mentions; 2 submissions, 8 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 8 mentions; 2 submissions, 6 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 10 mentions; 1 submissions, 9 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC202
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC1028
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC505
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC514
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC826
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC1019
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc. rga is a line-oriented search tool that allows you to look for a regex in a multitude of file types. rga wraps the awesome ripgrep and enables it to search in pdf, docx, sqlite, jpg, movie subtitles (mkv, mp4), etc. For more detail, see this introductory blogpost: https://phiresky.github.io/blog/2019/rga--ripgrep-for-zip-targz-docx-odt-epub-jpg/ rga will recursively descend into archives and match text in every file type it knows. Here is an example directory with different file types: demo/ ├── greeting.mkv ├── hello.odt ├── hello.sqlite3 └── somearchive.zip ├── dir │ ├── greeting.docx │ └── inner.tar.gz │ └── greeting.pdf └── greeting.epub Integration with fzf See the wiki for instructions of integrating rga with fzf. INSTALLATION Linux x64, macOS and Windows binaries are available in GitHub Releases. Linux Arch Linux pacman -S ripgrep-all Gentoo Linux emerge sys-apps/ripgrep-all Nix nix-env -iA nixpkgs.ripgrep-all Debian-based download the rga binary and get the dependencies like this: apt install ripgrep pandoc poppler-utils ffmpeg If ripgrep is not included in your package sources, get it from here. rga will search for all binaries it calls in $PATH and the directory itself is in. Windows Note that installing via chocolatey or scoop is the only supported download method. If you download the binary from releases manually, you will not get the dependencies (for example pdftotext from poppler). If you get an error like VCRUNTIME140.DLL could not be found, you need to install vc_redist.x64.exe. Chocolatey choco install ripgrep-all Scoop scoop install rga Homebrew/Linuxbrew rga can be installed with Homebrew: brew install rga To install the dependencies that are each not strictly necessary but very useful: brew install pandoc poppler ffmpeg MacPorts rga can also be installed on macOS via MacPorts: sudo port install ripgrep-all Compile from source rga should compile with stable Rust (v1.75.0+, check with rustc --version). To build it, run the following (or the equivalent in your OS): ~$ apt install build-essential pandoc poppler-utils ffmpeg ripgrep cargo ~$ cargo install --locked ripgrep_all ~$ rga --version # this should work now Available Adapters rga works with adapters that adapt various file formats. It comes with a few adapters integrated: rga --rga-list-adapters You can also add custom adapters. See the wiki for more information. Adapters: pandoc Uses pandoc to convert binary/unreadable text documents to plain markdown-like text Runs: pandoc --from= --to=plain --wrap=none --markdown-headings=atx Extensions: .epub, .odt, .docx, .fb2, .ipynb, .html, .htm poppler Uses pdftotext (from poppler-utils) to extract plain text from PDF files Runs: pdftotext - - Extensions: .pdf Mime Types: application/pdf postprocpagebreaks Adds the page number to each line for an input file that specifies page breaks as ascii page break character. Mainly to be used internally by the poppler adapter. Extensions: .asciipagebreaks ffmpeg Uses ffmpeg to extract video metadata/chapters, subtitles, lyrics, and other metadata Extensions: .mkv, .mp4, .avi, .mp3, .ogg, .flac, .webm zip Reads a zip file as a stream and recurses down into its contents Extensions: .zip, .jar Mime Types: application/zip decompress Reads compressed file as a stream and runs a different extractor on the contents. Extensions: .als, .bz2, .gz, .tbz, .tbz2, .tgz, .xz, .zst Mime Types: application/gzip, application/x-bzip, application/x-xz, application/zstd tar Reads a tar file as a stream and recurses down into its contents Extensions: .tar sqlite Uses sqlite bindings to convert sqlite databases into a simple plain text format Extensions: .db, .db3, .sqlite, .sqlite3 Mime Types: application/x-sqlite3 The following adapters are disabled by default, and can be enabled using '--rga-adapters=+foo,bar': mail Reads mailbox/mail files and runs extractors on the contents and attachments. Extensions: .mbox, .mbx, .eml Mime Types: application/mbox, message/rfc822 USAGE: rga [RGA OPTIONS] [RG OPTIONS] PATTERN [PATH ...] FLAGS: --rga-accurate Use more accurate but slower matching by mime type By default, rga will match files using file extensions. Some programs, such as sqlite3, don't care about the file extension at all, so users sometimes use any or no extension at all. With this flag, rga will try to detect the mime type of input files using the magic bytes (similar to the `file` utility), and use that to choose the adapter. Detection is only done on the first 8KiB of the file, since we can't always seek on the input (in archives). --rga-no-cache Disable caching of results By default, rga caches the extracted text, if it is small enough, to a database in ${XDG_CACHE_DIR-~/.cache}/ripgrep-all on Linux, ~/Library/Caches/ripgrep-all on macOS, or C:\Users\username\AppData\Local\ripgrep-all on Windows. This way, repeated searches on the same set of files will be much faster. If you pass this flag, all caching will be disabled. -h, --help Prints help information --rga-list-adapters List all known adapters --rga-print-config-schema Print the JSON Schema of the configuration file --rg-help Show help for ripgrep itself --rg-version Show version of ripgrep itself -V, --version Prints version information OPTIONS: --rga-adapters=<adapters>... Change which adapters to use and in which priority order (descending) "foo,bar" means use only adapters foo and bar. "-bar,baz" means use all default adapters except for bar and baz. "+bar,baz" means use all default adapters and also bar and baz. --rga-cache-compression-level=<compression-level> ZSTD compression level to apply to adapter outputs before storing in cache db Ranges from 1 - 22 [default: 12] --rga-config-file=<config-file-path> --rga-max-archive-recursion=<max-archive-recursion> Maximum nestedness of archives to recurse into [default: 5] --rga-cache
Read the full README on GitHub

What Hacker News says

42 sources
I mostly focus on text based content so PDF and webpages are easily supported. for PDFs I thought about using https://github.com/phiresky/ripgrep-all or pdfgrep https://pdfgrep.org/ For images, what do you want to grep for? for exif data -> https://exiftool.org/ if you want to find image based content, you might need something smarter. I think maybe it is a place where tools such as https://github.com/ultralytics/yolov5 can shine for me. simple enough to work with most of my images and tag them according to some preferences, and I would save such tags in a txt file. Anyway, all metadata I store about images, links etc are all persisted in txt files. summaries, tags, etc, incoming/outgoing links etc, each has its own file. There are folders per link/content. Under each folder, one file per type of metadata. So it is very easy to know if so
Read the rest
me metadata is missing for a file, no index needed, it is just as simple as checking the presence of a file. everything is compatible with grep then. for docx and xlsx it is out of my plate at this time, I didn't experiment enough to judge what works well enough. I hate those things.
In Linkwarden: FOSS self-hostable bookmarking with AI-tagging and page archival
Integrating ripgrep-all with fzf makes for a powerful combination when you want to recursively search the contents of a given directory. I have been using a shell function to do this, and it works wonderfully well: https://github.com/phiresky/ripgrep-all/wiki/fzf-Integration The built-in rga-fzf command appeared in v0.10 and ostensibly obviates the need for the above shell function, but the built-in command produces errors for me on MacOS: https://github.com/phiresky/ripgrep-all/issues/240
In Rga: Ripgrep, but also search in PDFs, E-Books, Office documents, zip, etc.

Showing the 15 most recent of 42 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.