The built-in file browser tells you what files exist. It doesn't tell you which ones are safe to open.
Look at your VS Code Explorer right now.
You see filenames. Folder hierarchies. Maybe some Git status colors. What you don't see is anything that helps you decide which file to click next.
Three files sit in front of you:
-
auth.js -
authUtils.js -
auth-helpers.ts
They look equal. Same font, same icon, same visual weight. So you click auth.js. VS Code freezes. The status bar shows "Initializing JS/TS language features." Your MacBook fan spins up. Ten seconds later, you see it: 4,800 lines of every authentication method the company has ever written, none of them documented.
You close the tab — but the damage is done. Your TypeScript server is still catching up. Copilot is scanning that monster file you just closed. Your mental context is fractured. You only wanted to check a utility function.
This happens because VS Code's Explorer is incomplete. It gives you location (where files are) but hides scale (what you're about to open).
I built LinePeek to fix that.
Look at your VS Code Explorer right now.
You see filenames. Folder hierarchies. Maybe some Git status colors. What you don't see is anything that helps you decide which file to click next.
Three files sit in front of you:
-
auth.js -
authUtils.js -
auth-helpers.ts
They look equal. Same font, same icon, same visual weight. So you click auth.js. VS Code freezes. The status bar shows "Initializing JS/TS language features." Your MacBook fan spins up. Ten seconds later, you see it: 4,800 lines of every authentication method the company has ever written, none of them documented.
You close the tab — but the damage is done. Your TypeScript server is still catching up. Copilot is scanning that monster file you just closed. Your mental context is fractured. You only wanted to check a utility function.
This happens because VS Code's Explorer is incomplete. It gives you location (where files are) but hides scale (what you're about to open).
I built LinePeek to fix that.
The Explorer Forces You to Guess
When you can't see file sizes, every click is a gamble. You're playing file roulette with your own productivity.
The worst part? You develop defensive habits. You start memorizing which files are "safe" and which ones to avoid. api.ts is fine. legacy.ts is a trap. You navigate by superstition instead of information.
LinePeek makes the invisible visible. It adds line count badges next to every file in your Explorer. One glance tells you:
-
auth.js— 47 lines → Safe to explore -
authUtils.js— 1,240 lines → Heavy, maybe refactor later -
auth-helpers.ts— 89 lines → Exactly what you're looking for
No clicks. No loading. No tab pollution. You decide before VS Code does the work.
Your IDE Normalizes Technical Debt
Files grow gradually. Today it's 200 lines. Next month it's 400. Six months later it's 1,100 — and nobody noticed because VS Code hides the line count in the bottom-right corner of the status bar, tiny and gray.
Your editor should make problems visible. Instead, it makes them invisible. You stare at bloated files every day without realizing they're bloated. The debt accumulates in plain sight, hidden by the UI.
LinePeek makes debt visible at the point of contact. Every time you look at the Explorer, you see:
- Small files fade into the background (good, healthy)
- Large files glow yellow or red (attention needed)
You develop an intuition for code health. You spot the 800-line component in a sea of 80-line modules. You notice when your "quick fix" made a file cross the 500-line threshold. The feedback loop is instant and visual.
How LinePeek Works
LinePeek is a VS Code extension that adds file size information directly to your Explorer using the FileDecorationProvider API. Here's what you get:
- Instant Line Counts: Every file shows its line count as a subtle badge. Streaming file reads and intelligent caching keep it fast even in 10,000-file workspaces.
- Color-Coded Thresholds: Files change color based on size:
- Default: Small files (< 100 lines)
- Blue: Medium files (100–500 lines)
- Yellow: Large files (500–1000 lines)
- Red: Very large files (> 1000 lines)
- Smart Filtering: Binary files, images, and anything over 10MB are automatically skipped. You can configure ignore patterns for
node_modules,dist, or any generated folders.
Optional Features
All disabled by default, enable what you need:
- Show file size (KB/MB) instead of or alongside line counts
- Directory totals (see cumulative lines in folders)
- SLOC counts (excluding comments and blanks)
- Live updates as you type
- Git change tracking in tooltips
Installation
From the VS Code Marketplace:
- Open Extensions (
Cmd+Shift+X/Ctrl+Shift+X) - Search "LinePeek"
- Click Install
From the command line:
code --install-extension brunobrise.linepeek
LinePeek works immediately. No restart, no configuration. Open any folder and line counts appear next to your files.
Configuration Example
Fine-tune LinePeek in your VS Code settings (Cmd+,):
{
"linepeek.displayMode": "both",
"linepeek.colorThresholds": {
"small": 50,
"medium": 150,
"large": 300
},
"linepeek.ignoredPatterns": [
"**/node_modules/**",
"**/.git/**",
"**/dist/**",
"**/*.generated.ts"
]
}
Why I Built This
I was tired of my IDE hiding information I needed. VS Code is an amazing editor, but its Explorer is passive — it shows you files and waits for you to guess. I wanted an Explorer that helps me decide.
LinePeek is free and open source (MIT) because this is a basic quality-of-life feature. Every developer deserves to see what they're about to open.
👉 Install LinePeek: marketplace.visualstudio.com/items?itemName=brunobrise.linepeek
⚙️ Source Code: github.com/brunobrise/linepeek


Top comments (0)