mrkeyoor.com_
Wed 16 Sept 07:06 UTC
Dev Toolsevaluationupdated 27 Aug 2026

ripgrep review

ripgrep is a command-line search tool for finding text and regular-expression matches across directories. It searches recursively, respects ignore files by default, skips hidden and binary files, and works on Windows, macOS, and Linux.

+167stars / 7d
Verdict

Our ripgrep run installed 42 packages in 9 seconds, built in 19 seconds, and passed all 450 tests in 11 seconds. It is the sensible default for interactive source-tree search on a developer machine, provided you understand that ignored, hidden, and binary files are excluded unless requested. Keep grep for portable scripts, and test PCRE2 or very-large-file edge cases that matter to your workload.

We ran it

Lab card: what happened when we ran ripgrepScreenshot of ripgrep (github.com/BurntSushi/ripgrep)
Install✓ · 9s42 packages
Build✓ · 19s
Tests✓ · 11s450 passed · 0 failed of 450 (cargo test)
Repo236 files~56,658 lines of source · 3.3 MB · 2 CI workflows · tests dir

Answers from our run

Does ripgrep build from source?

Dependencies installed in 9 seconds (42 packages), and the build succeeded in 19 seconds. We cloned commit 3fce3b5 into a clean Debian container with 3 CPUs and no project-specific setup.

Do ripgrep's tests pass?

Yes: 450 of 450 passed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use ripgrep?

Scripts that require a POSIX-standard tool available on nearly every Unix host: ripgrep's README explicitly recommends grep for portability and ubiquity.

What are the alternatives to ripgrep?

ugrep, The Silver Searcher, ack. Our ripgrep run installed 42 packages in 9 seconds, built in 19 seconds, and passed all 450 tests in 11 seconds.

Setup5/59-second install, 19-second build, and release binaries for major OSes
Docs5/5README, guide, FAQ, regex docs, and explicit reasons not to use it
Community5/567,618 stars with active issue work and a July 2026 release
Maturity5/5Version 15.2.0 and all 450 tests passed in our run

Discussed on

  1. hnRipgrep – A new command line search tool740 points
  2. hnRipgrep 13.0547 points
  3. hnRipgrep 15.0476 points
  4. hnRipgrep 11 Released410 points
  5. hnRipgrep is faster than grep, ag, Git grep, ucg, pt, sift (2016)390 points

Who it’s for

Developers who search source trees repeatedly and want Git ignore rules applied automatically.
Shell users who need Unicode-aware regular expressions, file-type filters, and useful context output.
Tool authors who want the same search libraries that power the rg command.
Windows, macOS, and Linux users who prefer one consistent search interface.

Who it’s NOT for

Scripts that require a POSIX-standard tool available on nearly every Unix host: ripgrep's README explicitly recommends grep for portability and ubiquity.
Users who expect ignored, hidden, and binary files to be searched without flags: ripgrep excludes them by default, and rg -uuu is needed to disable all automatic filtering.
Search workflows built around look-around or backreferences without an extra engine: those patterns require PCRE2 support and -P or an automatic engine choice.
Teams needing a maintained search index for very large corpora: indexing remains an open RFC rather than a shipped feature.
Operators standardizing on the 15.2.0 musl binary for huge searches without their own stress test: issue 3494 reports occasional segmentation faults in that exact build.

Setup reality

Our Rust sandbox installed 42 packages in 9 seconds. The build succeeded in 19 seconds, and cargo test completed in 11 seconds with all 450 tests passing.

End users usually do not need a source checkout. The README lists release archives and package-manager routes for Windows, macOS, and several Linux distributions; building from source requires a Rust toolchain. PCRE2 is optional and depends on how the binary was compiled.

The 3.3 MB checkout contained 236 files and about 56,658 source lines. It had a tests directory and 2 CI workflows but no Dockerfile, which fits a portable command-line binary rather than a service deployment.

Ignore-aware recursive search is the useful default

ripgrep searches a directory tree for text or regular-expression matches. Its strongest product decision is automatic filtering: .gitignore, .ignore, and .rgignore rules apply by default, while hidden files and binary files are skipped. That behavior matches how developers usually search a repository. A query for a function name is less likely to drown in dependencies, generated output, or Git internals before you add any exclusion flags.

The defaults are policy, not magic. rg -uuu disables all automatic filtering when completeness matters. File-type switches can include Python or exclude JavaScript, and users can define new types. The tool supports context lines, multiple patterns, replacement output, Unicode, several text encodings, multiline matches, compressed-file search, and arbitrary preprocessors. Those options cover much of everyday grep use while retaining a short basic command.

PCRE2 is available, but the default engine is stricter

ripgrep's normal regex engine does not support look-around or backreferences. Those constructs require a binary built with PCRE2 and either -P or an automatic engine selection. This distinction is healthy because the default Rust regex engine avoids pattern behavior that can become difficult to bound, but copied expressions from another tool may fail until the engine is changed. Check rg --version on packaged builds before making PCRE2 part of a team script.

Version 15.2.0 has a current report involving that advanced path. Issue 3508 describes a multiline PCRE2 pattern where an anchor inside a lookaround suppresses an unrelated match. Another open report, issue 3503, concerns column numbers for multiline patterns in a lookahead. These are narrow cases rather than reasons to reject the tool, but they show why a search used for automated rewriting needs fixture tests beyond a few interactive examples.

What happened when we ran it

Our sandbox cloned commit 3fce3b5 and installed 42 Rust packages in 9 seconds. The build succeeded in 19 seconds. cargo test then finished in 11 seconds with 450 passed and 0 failed out of 450. That is unusually clean evidence for a command-line tool: setup was short, compilation worked, and the complete test result reported by our harness was green.

The repository itself was 3.3 MB, with 236 files and about 56,658 lines of source. We found a tests directory and 2 CI workflow files, but no Dockerfile. That layout makes sense because ripgrep is distributed as a native executable, not run as a long-lived service. The README links precompiled archives for Windows, macOS, and Linux, along with package-manager instructions for each platform.

Our run did not benchmark search speed, and we will not substitute the README's hardware-specific tables for measurements on our box. Search time changes with corpus shape, match volume, regex structure, storage, and output. The project documentation openly warns about performance cliffs when patterns offer few literal optimizations or return huge numbers of matches. Test the query and data that drive your decision rather than repeating a headline ratio.

Portability is the main reason to keep grep

The README gives a direct reason to walk away: ripgrep is not POSIX and is not installed everywhere. A shell script shipped across minimal containers, recovery systems, network appliances, and old Unix hosts should usually use grep if its pattern fits. Adding a binary download to a deployment only to save a little typing creates a dependency that an interactive workstation does not mind.

Default filtering can also be wrong for audits and incident response. A secret accidentally placed in an ignored file is still a secret, and a hidden configuration directory may be the exact target. The three u levels progressively re-enable ignored, hidden, and binary content, but users must remember to ask. For compliance searches, encode the intended scope in a wrapper or command record instead of relying on anyone's personal ripgrep configuration.

Index-free search stays simple and has a ceiling

ripgrep walks files rather than maintaining a search database. That removes index setup, stale-state problems, and background services. It is excellent for a working tree, a checkout in CI, or a directory that changes constantly. Search starts with the files as they exist now, and ignore matching happens during traversal. There is no separate update command to remember.

The tradeoff appears in issue 1497, an open RFC for n-gram indexing aimed at search at scale. Its discussion names synchronization and relevance as hard parts. Until an index ships, teams querying enormous, mostly stable corpora repeatedly should compare an indexed code-search system. Issue 3494 also reports occasional segmentation faults with the 15.2.0 x86_64 musl release binary during very large searches, which is a specific reason to stress-test that artifact before standardizing it for such jobs.

Release activity supports a low-risk workstation choice

GitHub recorded 67,618 stars, 182 combined issues and pull requests, and a last push on August 4, 2026. Release 15.2.0 arrived on July 15, adding an aarch64 musl binary, respecting two Git configuration variables, improving large-tree traversal, and fixing ignore matching across multiple directories. The combined open count is not a bug count; recent releases and detailed reproductions provide the more useful maintenance signal.

For most developers, ripgrep earns its place beside Git and an editor. The 9-second dependency install, 19-second build, and 450 passing tests make the source project easy to trust and easy to try. Its sharp edges are documented: filtering changes completeness, PCRE2 changes regex behavior, and portability still belongs to grep. Learn those boundaries once, then rg is usually the fastest route from a question to the relevant line.

Alternatives

ProjectWhat it isPick it when
ugrepA grep-compatible search tool with broad archive, encoding, and interactive search features.pick this instead when archive formats, interactive search, or grep-style compatibility matter more than ripgrep's defaults.
The Silver SearcherA code-focused recursive searcher that also skips ignored files.pick this instead when an existing workflow already depends on `ag` flags and output.
ackA Perl-based source search tool with mature file-type selection.pick this instead when Perl availability and ack's type system fit an established toolchain.

What people are saying

  1. [github-trending] BurntSushi/ripgrep
  2. [hackernews] RipGrep musl binaries occasionally segfault during very-large searches

Sources

  1. ripgrep repository and README
  2. ripgrep 15.2.0 release
  3. ripgrep indexing RFC 1497
  4. ripgrep musl large-search issue 3494
  5. ripgrep multiline PCRE2 issue 3508

More dev tools reviews

IKONA-Security · noty · forward-implementation-first · breakscale · black · ASC · the whole board →