npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

markdown-web

v2.15.1

Published

A modern, browser-based markdown editor that you can run in any directory. Edit .md files with live preview, auto-save, and a VS Code-inspired interface.

Downloads

276

Readme

Markdown Web Editor

npm version License: MIT TypeScript

A modern, browser‑based Markdown editor you can run in any directory. Edit .md files with live preview, autosave, Git integration, and an optional AI assistant powered by OpenAI or Anthropic.

✨ Features

  • 📁 File Explorer: Browse, create, rename, delete, and drag‑and‑drop files/folders
  • 🖱️ Context Menus: Right‑click actions; mobile double‑tap to open the menu
  • 🔀 Git Integration: Repo detection, color‑coded status, stage/add, commit (with message), push, and clone
  • ✨ AI Assistant: Ask/Adjust modes; selection‑aware; OpenAI and Anthropic models; per‑file cost tracking
  • 🔍 Selection Highlight: Keeps the selected range highlighted while the AI modal is open
  • 👁️ Live Preview: Toggle or split view; GFM + syntax highlighting
  • 💾 Autosave: Saves after you pause typing; manual save with Ctrl/Cmd+S
  • 📊 Status Bar: Words, lines, characters, and cumulative AI cost per file
  • 🧭 Deep Links: Direct URL to any file (#/path/to/file.md) with browser back/forward support
  • 📤 Export: Download Markdown or export to PDF (styled by your theme)
  • 🎨 Themes: VS Code‑inspired dark theme; pluggable theme system
  • 📱 Responsive UI: Mobile‑friendly header icons and status layout
  • 🌐 ngrok Support: Optional public URL via reserved domain when flags are provided

🚀 Quick Start

Run with npx (no installation required)

npx markdown-web

Or install globally

npm install -g markdown-web
markdown-web

CLI Options

  • --no-open: Do not open the browser automatically
  • --disable-auth: Disable password protection (not recommended)
  • --auth <password>: Use a specific password instead of a random one
  • --openai-key <key>: Provide an OpenAI API key via CLI (alternative to Settings)
  • --ngrok-auth-token <token>: ngrok Authtoken (enables public tunnel when used with domain)
  • --ngrok-domain <domain>: Reserved ngrok domain (e.g. yourname.ngrok.app)
# Do not auto-open browser
npx markdown-web --no-open

# Provide your own strong password
npx markdown-web --auth "S3cure-Long-Password!"

# Disable auth entirely (local trusted environments only)
npx markdown-web --disable-auth

# Start with a public ngrok URL (requires reserved domain)
npx markdown-web \
  --ngrok-auth-token YOUR_TOKEN \
  --ngrok-domain yourname.ngrok.app

📖 Usage

  1. Navigate to any directory containing markdown files
  2. Run npx markdown-web
  3. Your browser will open to http://localhost:3001
  4. Enter the password shown in your terminal (one is generated by default)
  5. Start editing! Files are auto-saved as you type

Authentication

  • By default, the server starts with password protection enabled.
    • A strong random password is generated and printed in your terminal when the server starts.
    • You can supply your own with --auth <password>, or disable auth with --disable-auth.
  • Sessions are stored in a secure, HttpOnly cookie and last 24 hours.
  • For best security, use HTTPS in untrusted networks (see below) or run behind an ngrok reserved domain.

Settings

  • Open Settings from the gear icon in the sidebar footer.
  • Settings persist to ~/.markdown-web/settings.json and include:
    • selectedTheme, previewLayout (full/split), sidebarMode (overlay/inline)
    • openAiKey, anthropicKey (store keys locally on your machine)
    • defaultModel, defaultModelProvider (OpenAI or Anthropic)
  • You can also pass --openai-key to the CLI, or set env vars OPENAI_KEY/ANTHROPIC_API_KEY.

URL Navigation

  • Direct file links: http://localhost:3001/#/path/to/file.md
  • Bookmark specific files
  • Browser back/forward works
  • Refreshing preserves current file

Keyboard Shortcuts

  • Ctrl+S / Cmd+S - Save immediately
  • Toggle preview with header button
  • Use hamburger menu to hide/show sidebar

🤖 AI Assistant

  • Modes:
    • Adjust: Apply requested edits to the document (or just the selected text)
    • Ask: Ask questions about the current document; answer is read‑only (rendered Markdown)
  • Selection‑aware: If text is selected, both Ask/Adjust operate only on that selection
  • Selection highlight: Your selection stays highlighted while the AI modal is open
  • Models in dropdown (only shown if you added the relevant key):
    • OpenAI: GPT‑5, GPT‑5 Mini, GPT‑5 Nano
    • Anthropic: Claude Sonnet 4 (claude-sonnet-4-0), Claude Opus 4.1 (claude-opus-4-1)
  • Costs: Token costs are computed per request and accumulated per file; the Status Bar shows totals

Pricing (per 1K tokens; override via env if desired):

  • OpenAI: GPT‑5 $0.00125 in / $0.01000 out; GPT‑5 Mini $0.00025 in / $0.00200 out; GPT‑5 Nano $0.00005 in / $0.00040 out
  • Anthropic: Claude Opus 4.1 $15 in / $75 out; Claude Sonnet 4 $3 in / $15 out

Implementation notes:

  • OpenAI via the openai SDK; Anthropic via @anthropic-ai/sdk
  • Per‑file cost logs are stored at ~/.markdown-web/logs/<file>/ai.json

🧩 Git Integration

  • Repos are auto‑detected; repo folders show a Git badge
  • Colors: repo red (unstaged), yellow (staged); files green (untracked), yellow (modified), red (deleted)
  • Right‑click (desktop) / double‑tap (mobile) context menus:
    • File: Add to Git / Stage changes; Rename; Delete
    • Repo folder: Commit… (title + message), Push; New File/Folder; Rename; Delete
  • Clone repositories: Right‑click root or a folder → Clone Repository…
  • Drag‑and‑drop: Move files/folders; target folders auto‑expand on hover
  • Expanded folders persist when closing the overlay sidebar

🛠️ Development

To work on this project:

# Clone the repository
git clone https://github.com/vultuk/markdown-web.git
cd markdown-web

# Install dependencies
npm install

# Run in development mode (with hot reload)
npm run dev

# Build for production
npm run build

# Run production build
npm start

# Type check
npm run typecheck

🔒 Security

  • Only allows access to files within the launch directory
  • Automatically filters for .md files only
  • Prevents directory traversal attacks
  • No external network access required
  • Password authentication is enabled by default; disable with --disable-auth or set with --auth <password>
  • Browser sessions are protected with HttpOnly, SameSite=Strict cookies
  • Use HTTPS to protect credentials in transit (see SSL_SETUP.md and scripts under scripts/)
  • Be cautious when exposing publicly (e.g. with ngrok) — enable auth and prefer HTTPS

🏗️ Tech Stack

  • Frontend: React 18, TypeScript, Vite
  • Markdown: react‑markdown + remark‑gfm; syntax highlighting
  • Backend: Node.js + Express
  • AI: openai SDK and @anthropic-ai/sdk
  • Tunnel: @ngrok/ngrok (optional)

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

See CONTRIBUTING.md for detailed guidelines.

📄 License

MIT — see LICENSE

📊 Project Status

  • ✅ Stable and production‑ready
  • 🔄 Actively maintained
  • 🐛 Bug reports welcome
  • 💡 Feature requests encouraged

🙏 Acknowledgments

  • Inspired by VS Code's interface design
  • Built with modern web technologies
  • Thanks to the React and Node.js communities