v1.0.0 · built in Go

Find the signal in terminal noise.

Add useful ANSI color to logs, test output, and plain text without changing the way Unix pipelines work.

go install github.com/erniebrodeur/hilighter/cmd/hilighter@latest
deploy.log · hilighter live
$ deploy --env production | hilighter

21:04:18.029 INFO  service started
21:04:18.117 DEBUG listening on 10.0.4.12:8080
21:04:19.442 NOTICE connected to ops@example.com
21:04:21.005 WARN  cache response took 843ms
21:04:22.801 ERROR upstream unavailable

stream continues...
stdinpipe anything
filesread in order
PCREmatch precisely
ANSI-safepreserve color

01 / Quickstart

A filter, not a framework.

Put it where text already flows. There is no daemon, pager, command runner, or hidden terminal detection.

02

Read files

Process multiple files in order, with highlighting state reset at every boundary.

hilighter app.log archive.log
03

Add an expression

Repeated -e flags replace configured rules and run in declaration order.

build | hilighter -e '(?i)failed'

Useful by default

The important parts stand out immediately.

https://api.example.dev/v1

Endpoints

URLs, IPv4, IPv6, and MAC addresses.

Aug  9 18:50:10

Timestamps

ISO 8601 and classic syslog timestamps.

deploys@example.dev

Addresses

Practical email matching without bare-domain noise.

FATAL

Severity

Trace through fatal, styled by meaning.

02 / Themes

Twelve dark palettes. Zero setup.

Every theme ships inside the binary and uses truecolor output. Select one with -t or save its slug in ~/.hilighter/config.yaml.

Abyss

abyss

Dark 2026

dark-2026

Dark Modern

dark-modern

Dark+

dark-plus

High Contrast

high-contrast

Kimbie Dark

kimbie-dark

Monokai default

monokai

Monokai Dimmed

monokai-dimmed

Red

red

Solarized Dark

solarized-dark

Tomorrow Night Blue

tomorrow-night-blue

Visual Studio Dark

visual-studio-dark
some-command | hilighter -t solarized-dark

03 / Customize

Your rules. Your colors.

First run creates a small customization directory. Empty rules use the shipped defaults, while non-empty rules replace them. Custom themes overlay Monokai, so they only need to define the styles they change.

~/.hilighter/rules.yamlPCRE
rules:
  - name: failure
    pattern: '(?i)failed'
    style: error

  - name: request
    pattern: '(GET|POST)\s+(\S+)'
    groups:
      "1": info
      "2": endpoint
~/.hilighter/themes/custom.yamltruecolor
styles:
  error:
    fg: '#f8f8f2'
    bg: '#f92672'
    bold: true

  endpoint:
    fg: '#66d9ef'
    bold: true

04 / Reference

One command. Four switches.

hilighter [-e <pattern> ...] [-t <theme>] [--] [file ...]
-e <pattern>
Add an ordered PCRE expression. Repeat as needed.
-t <theme>
Select a built-in theme or a custom theme path.
--
Stop option parsing and permit dash-prefixed filenames.
-
Read stdin at this position among file operands.
--help
Print the complete public grammar.
--version
Print hilighter-1.0.0.

Plays well downstream

Color survives the pipeline.

Existing ANSI sequences pass through untouched. Use less -R to keep colors while paging. Broken pipes stop quietly without hiding other output errors.

some-command 2>&1 | hilighter | less -R

Less noise. Same workflow.

Make terminal output readable.