A growing collection of browser-based utilities for web developers. Zero dependencies, no tracking, no server-side processing — everything runs locally in your browser.
Live at: tools.bymarkriechers.com
Preview how your Open Graph images will appear across 12+ social platforms before you publish.
- Platform previews for Facebook, X/Twitter, LinkedIn, Bluesky, Discord, Slack, iMessage, WhatsApp, Mastodon, Threads, Telegram, and Reddit
- Visual warnings for missing tags, undersized images, and incorrect aspect ratios
- Meta tag validation with copy-paste suggestions for fixing issues
- Shareable URLs — append
?url=https://example.comto share a preview - Platform debug tool links for forcing cache refreshes
Beautify, format, and clean up messy or minified HTML instantly.
- Configurable indentation — 2 spaces, 4 spaces, or tabs
- Tag normalization — lowercase tags and attributes, quote unquoted values
- Attribute tidying — sort alphabetically, remove empty attributes
- Minification — strip all unnecessary whitespace
- Live preview — see rendered HTML in a sandboxed iframe
- Stats — input/output size comparison, tag count, issues fixed
| Principle | Implementation |
|---|---|
| Zero dependencies | No npm, no frameworks, no build step — just HTML, CSS, and vanilla JavaScript |
| Privacy first | All processing happens in your browser; nothing is sent to any server |
| Accessible | Semantic HTML, ARIA labels, keyboard navigation, screen reader friendly |
| Themeable | Dark/light mode follows your OS preference automatically |
| Mobile ready | Responsive layouts work on any screen size |
/
├── index.html # Landing page
├── CNAME # Custom domain config
├── README.md # This file
├── suggested-tools.md # External tool links (source of truth)
│
├── scripts/
│ └── build-suggested-tools.js # Parses suggested-tools.md → injects HTML
│
├── .github/workflows/
│ └── build-suggested-tools.yml # Auto-rebuilds on push to suggested-tools.md
│
├── og-image/ # OG Image Preview
│ ├── index.html
│ ├── styles.css
│ ├── app.js
│ ├── platforms.json # Platform specifications
│ ├── example.html # Demo page with perfect OG setup
│ └── functions/
│ └── fetch-meta.js # Optional Cloudflare Worker proxy
│
└── formatter/ # HTML Formatter & Tidy
├── index.html
├── styles.css
└── app.js
Each tool is self-contained in its own directory with its own index.html, making it easy to develop, test, and deploy independently.
No build step required. Open any index.html directly in a browser, or use a local server for full functionality:
# Python
python3 -m http.server 8080
# Node.js (npx, no install needed)
npx serve .
# PHP
php -S localhost:8080Then visit http://localhost:8080.
This repo is configured for GitHub Pages with a custom domain.
- Push to GitHub
- Enable Pages in repo settings (Settings → Pages → Source: branch)
- Set custom domain to
tools.bymarkriechers.com - Add DNS CNAME record:
tools→your-username.github.io
External tools are third-party links that appear in the "Suggested Tools" sections across the site. They are managed through a single markdown file and automatically injected into the HTML pages.
suggested-tools.mdis the source of truth. Each##section maps to a page (home,formatter,og-image).scripts/build-suggested-tools.jsparses the markdown and injects the generated HTML between<!-- SUGGESTED_TOOLS_START -->/<!-- SUGGESTED_TOOLS_END -->markers in each page.- A GitHub Action runs the build script automatically whenever
suggested-tools.mdis pushed.
-
Open
suggested-tools.md -
Add a standard markdown link under the page section(s) where it should appear:
## home - [My New Tool](https://example.com/)
Add the link to multiple sections if it's relevant to more than one page.
-
Rebuild the HTML — pick one:
- Locally: run
node scripts/build-suggested-tools.js - Automatically: push
suggested-tools.mdto GitHub and the Action handles it
- Locally: run
If you create a new tool page and want it to receive its own suggested-tools list:
-
Add
<!-- SUGGESTED_TOOLS_START -->and<!-- SUGGESTED_TOOLS_END -->markers to the page's HTML -
Register the page in
scripts/build-suggested-tools.jsby adding an entry toPAGE_MAP:const PAGE_MAP = { home: { file: 'index.html', mode: 'section' }, formatter: { file: 'formatter/index.html', mode: 'inline' }, 'og-image': { file: 'og-image/index.html', mode: 'inline' }, 'new-tool': { file: 'new-tool/index.html', mode: 'inline' }, };
sectionmode renders a full<section>with a heading (used on the home page)inlinemode renders links separated by·(used in tool page footers)
-
Add a matching
## new-toolsection with links insuggested-tools.md -
Update the GitHub Action's commit step in
.github/workflows/build-suggested-tools.ymlto include the new file ingit add
Want to add a new tool? Each tool should:
- Live in its own
/tool-name/directory - Use the same CSS custom properties for consistent theming
- Work entirely client-side (no server dependencies beyond optional CORS proxies)
- Be accessible and mobile-responsive
MIT