29 small developer tools. One domain. No accounts, no ads, no trackers.
Each tool lives on its own subdomain of hrz.lol. No login. No accounts. Anonymous
rooms exist only in memory and vanish when everyone leaves. Pastes and short
links live as long as you ask them to. The whole site runs on a single
small VPS — if it stays simple, it stays fast.
| Subdomain | Description |
|---|---|
paste |
Code & text paste with optional expiry, syntax highlight, password lock |
diff |
Compare two texts side-by-side, line-level diff |
md |
Markdown editor with live HTML preview & export |
chars |
Character, word, sentence, line counter with frequency & read time |
json |
Format, minify, validate, query JSON |
url |
URL parser & query-string explorer |
| Subdomain | Description |
|---|---|
req |
HTTP client in the browser. Any method, headers, body |
hook |
Live webhook inspector. Temporary URL, real-time stream |
meta |
Preview any URL (Open Graph / Twitter Card) |
whois |
Domain registration via RDAP |
ip |
Your public IP, country, reverse DNS, user-agent |
subnet |
IPv4 CIDR calculator. Network, broadcast, mask, hosts |
lnk |
URL shortener with optional click limit |
| Subdomain | Description |
|---|---|
hash |
MD5, SHA-1, SHA-256, SHA-512 |
jwt |
JWT decoder. Header, payload, signature |
enc |
Base64, URL, HTML entities, hex encode & decode |
bcrypt |
bcrypt hash & verify. Adjustable cost |
| Subdomain | Description |
|---|---|
uuid |
UUID v4, UUID v7, nanoid, ULID. Bulk and configurable |
qr |
QR code generator with custom colors and sizes |
fake |
Realistic fake data (names, emails, addresses) as table, JSON, CSV, SQL |
img |
Placeholder images on demand |
emoji |
Emoji search & copy. All Unicode categories |
| Subdomain | Description |
|---|---|
conv |
Image converter (jpg, png, webp, avif, tiff) |
ts |
Unix timestamp / date converter across timezones |
exif |
EXIF metadata viewer & stripper. GPS detection |
| Subdomain | Description |
|---|---|
color |
Color picker & palette generator |
cron |
Visual cron expression builder |
| Subdomain | Description |
|---|---|
chat |
Anonymous, ephemeral chat rooms |
draw |
Collaborative whiteboard |
Node.js + Express, MongoDB for persistent data (pastes, links), Socket.IO for realtime tools (chat, draw), Sharp for image work, Helmet + Content Security Policy + per-route rate limits. Server-side SSRF protection on URL-following endpoints. Uptime Kuma for monitoring.
Requires Node.js 20+ and MongoDB.
git clone https://github.com/NotKiwy/hrz.lol.git
cd hrz.lol
npm install
MONGODB_URI=mongodb://127.0.0.1:27017/hrz npm startServer starts on port 3001. Set PORT to override.
To reach the subdomain-routed tools locally, add to /etc/hosts:
127.0.0.1 hrz.lol paste.hrz.lol chat.hrz.lol draw.hrz.lol meta.hrz.lol
127.0.0.1 hook.hrz.lol whois.hrz.lol req.hrz.lol conv.hrz.lol qr.hrz.lol
127.0.0.1 hash.hrz.lol jwt.hrz.lol enc.hrz.lol json.hrz.lol diff.hrz.lol
127.0.0.1 md.hrz.lol color.hrz.lol cron.hrz.lol ts.hrz.lol fake.hrz.lol
127.0.0.1 img.hrz.lol chars.hrz.lol url.hrz.lol lnk.hrz.lol uuid.hrz.lol
127.0.0.1 subnet.hrz.lol bcrypt.hrz.lol exif.hrz.lol ip.hrz.lol emoji.hrz.lol
127.0.0.1 status.hrz.lol
Then open http://hrz.lol:3001.
No login, no accounts, no third-party analytics, no ads. The only data persisted is the content you explicitly create — pastes and short links. Anonymous rooms (chat, draw, webhook inspectors) live in memory and are gone the moment the last user leaves. Nothing is sold, nothing is shared.
Pull requests welcome. Each tool is a self-contained HTML file in public/
with an optional Express route in routes/. If you build a new one, drop
the directory into public/, add a subdomain mapping to server.js, and
include a tile on the home page.
If any tool here saved you a click, you can throw a few rubles into the jar at hrz.lol/support — fiat or crypto, no account needed. It keeps the lights on.
AGPL-3.0-or-later. If you run a modified version as a network service, you must publish your modifications.