Stop Squinting at JSON Walls.

RowLens transforms chaotic log streams into a fast, filterable grid. Local-first. Native performance. Zero cloud latency.

Before
Terminal — flutter run
{"timestamp":"2024-01-15T09:23:41.002Z","level":"info","message":"User authenticated","userId":"usr_8x7k2m","sessionId":"sess_abc123","duration":142,"metadata":{"ip":"192.168.1.1","userAgent":"Mozilla/5.0"}}
{"timestamp":"2024-01-15T09:23:41.105Z","level":"debug","message":"Cache hit for user profile","userId":"usr_8x7k2m","cacheKey":"profile:usr_8x7k2m"}
{"timestamp":"2024-01-15T09:23:41.203Z","level":"error","message":"Database connection failed","error":{"code":"ECONNREFUSED","host":"localhost","port":5432},"context":{"userId":"usr_8x7k2m","requestId":"req_xyz789"}}
{"timestamp":"2024-01-15T09:23:41.302Z","level":"info","message":"Retrying connection","attempt":1,"maxAttempts":3}
{"timestamp":"2024-01-15T09:23:42.401Z","level":"warn","message":"Slow query detected","query":"SELECT * FROM users","duration":2341,"threshold":1000}
{"timestamp":"2024-01-15T09:23:42.502Z","level":"debug","message":"Processing batch","items":47,"batchId":"batch_001"}

"2,847 lines. One error. Good luck."

After
RowLens
LIVE
Time
Level
Message
User ID
Duration
09:23:41
INFO
User authenticated
usr_8x7k2m
142ms
09:23:41
DEBUG
Cache hit for user profile
usr_8x7k2m
09:23:41
ERROR
Database connection failed
usr_8x7k2m
09:23:42
WARN
Slow query detected
2.34s
09:23:42
INFO
Retrying connection
Showing 5 of 2,847 events• Live streaming

Structured. Searchable. Fast.

Works with your stack

FlutterNode.jsFirebaseDockerKubernetesAWSGCP

Console Fatigue is Real.

You didn't become a developer to parse JSON with your eyes.

The Endless Scroll

Your Flutter app spits out 500 lines of JSON per second. You're hunting for one userId. Your eyes glaze over.

"2,847 lines. One error. Good luck."

The Copy-Paste Ritual

Copy log line. Open browser. Paste into JSON formatter. Realize you grabbed the wrong line. Repeat.

"Your clipboard knows too much."

Cloud Console Hell

You just want to see what happened 30 seconds ago. GCP Logs Explorer takes 8 seconds to load. Then another 4 to filter.

"Waiting for AWS to show you your own logs."

Logs are supposed to help you debug. Instead, they've become the thing you need to debug around.

Three Primitives. Complete Clarity.

Everything you need to understand your logs, nothing you don't.

Universal Ingestion

Ingest Anything. Instantly.

No SDKs. No agents. No config files to get started. Pipe it, tail it, or open it. RowLens handles the rest.

  • stdin — Pipe any process output directly. node server.js | rowlens
  • File tailing — Watch log files in real-time. Supports rotation.
  • TCP/UDP ports — Receive logs over the network from Docker, Kubernetes, or remote services.
  • VS Code Integration — View logs from your debug console without leaving the editor.
Terminal
$ flutter run | rowlens
$ tail -f /var/log/app.json | rowlens
$ rowlens --port 9999
$ docker logs -f my-app | rowlens
Configure Columns
Timetimestamp
relative
User ID
["userId", "user.id", "context.user_id"]
fallback: "—"
Durationduration_ms
duration
The Lens (Smart Grid)

Your Logs, Your Columns.

Every team logs differently. userId vs user_id vs context.user.id — RowLens doesn't care.

Smart Columns let you define extraction paths with fallback logic. RowLens tries each path in order and displays the first match.

Built-in formatters:

  • Timestamps: relative or absolute
  • Durations: "2.4s" not "2400"
  • Log levels: color-coded badges
  • URLs: clickable links
The Focus (Inspector)

See the Full Picture. One Click.

Click any row. The Inspector opens. No more copying to external tools. No more losing your place in the log stream.

  • Tree View — Collapse and expand nested objects. Search within the document. Click any value to copy.
  • Raw JSON — The original line, exactly as received.
  • Pretty Print — Formatted with syntax highlighting. Ready to paste into a bug report.
root
timestamp: "2024-01-15T09:23:41.002Z"
level: "error"
message: "Database connection failed"
error
code: "ECONNREFUSED"
host: "localhost"
port: 5432
context{...}

From Chaos to Clarity in 3 Steps.

Get started in under a minute. No account required.

1

Pipe Your Logs

Run your app. Pipe the output to RowLens. That's it.

# Flutter
flutter run | rowlens
# Node.js
npm start 2>&1 | rowlens
# Docker
docker logs -f app | rowlens

RowLens auto-detects JSON lines and starts streaming immediately.

2

Define Your Lens

First time? RowLens auto-detects common fields. Need more? Add custom columns and save as a Workspace.

# .rowlens.yaml
columns:
- name: Time
path: timestamp
format: relative
- name: User
paths: [userId, user.id]
- name: Duration
path: duration_ms
format: duration
3

Find What Matters

Filter by any column. Sort ascending or descending. Search across all fields.

  • Quick filters — Click any cell value to filter by it instantly.
  • Advanced querieslevel = "error" AND duration > 500
  • Keyboard-first⌘F to search. Vim-style j/k optional.

Your logs. Structured. Searchable. Fast.

Start Free. Scale When Ready.

RowLens is free for individual developers. Upgrade for power features.

Community

Free

Forever

  • Unlimited local log viewing
  • Up to 5 custom columns
  • Basic filtering and sorting
  • JSON Inspector
  • stdin and file ingestion
  • VS Code Extension
Download Free

No account required. No telemetry. Fully offline.

MOST POPULAR

Pro

$12/month

or $99/year (save 30%)

  • Everything in Community, plus:
  • Unlimited custom columns
  • Saved Workspaces per project
  • Advanced filters (regex, date ranges)
  • Multiple simultaneous streams
  • TCP/UDP port ingestion
  • Export to CSV/JSON
  • Priority support
Start 14-Day Free Trial

Team

$29/user/month

Billed annually

  • Everything in Pro, plus:
  • Shared Workspaces across team
  • Cloud sync for configurations
  • Centralized license management
  • SSO (SAML, OIDC)
  • Audit logs
  • Dedicated support channel
Contact Sales

All plans include macOS, Windows, and Linux support. One license per developer.

Frequently Asked Questions

Got questions? We've got answers.

Still have questions?

Get in touch