Changelog
What's changed, version by version. Older updates before v8.0 aren't tracked here.
v9.9
Bug fixes and layout polish
Latest
- Fixed the tool menu on phones and tablets: choosing a tool left it scrolled off the top of the screen, because the menu closed after the page had already scrolled. The menu now closes first, and the menu bar lands below the Example box instead of underneath it
- Jumps to a section (Styles, Colors, Library and the tools) are now measured from the real height of the Example box, so headings are no longer hidden under it on very narrow screens
- Copy no longer copies error messages. If the JSON formatter, Base64 or URL encoder or the Hash tool is showing an error, Copy now says there is nothing to copy, and those messages are shown in red
- Base64 now reads and writes UTF-8 directly, accepts URL-safe Base64 and input without "=" padding, and tells apart "not valid Base64" from "valid Base64 that isn't readable text". The URL encoder explains unpaired surrogate characters instead of failing quietly
- Upside down, Strike, Underline, Zalgo, Zero-width and Hidden-dots styles now work on whole visible characters, so emoji families, flags and letters with accents are no longer split apart. Upside down also mirrors brackets when it reverses text
- The Unix converter accepts fractional seconds such as 1760000000.7
- Library: the two filter rows are now labelled Type and Source, and the save form has hints and marks Category as optional
- Light theme: role colour previews stay on a dark Discord-style background so the colours are readable
- Checked and found already correct, so left unchanged: counter spacing ("Message: 23 / 2000"), clipboard success and failure handling, malformed or blocked browser storage, the circled zero, character counts for emoji, large Text Diff inputs, local and UTC timestamp conversion in several time zones, relative-time updates, stale Hash results, and the built-in permission presets
- Tested in a headless browser at 320 to 1440px widths in both themes. Not tested on real phones, Safari or Firefox
v9.8
Presets & Templates library
- Added a Presets & Templates library (Library in the header). Presets change only the settings they define; templates load editable content. Search it, filter by type, built-in or your own, tool and category, and open a preview before applying anything
- 61 built-in options: 18 templates (7 embeds, 3 webhook messages, 8 Markdown messages such as announcements, rules and changelogs) and 43 presets (embed styles, permissions, role colors, Color Lab palettes, timestamps and text styles), each with a description, category and tags
- Added a compact Presets and Templates picker inside the Embed Builder, Webhook Builder, Markdown Preview, Permissions Calculator, Role Color Converter, Timestamp Generator, Mention formatter, Color Lab and Text Styles. It shows only items that fit that tool by default, with an option to show the rest
- Save your own presets and templates from the current state of a tool, then rename, edit, duplicate or delete them. They are stored in this browser and survive a refresh. If storage is blocked or full you get a clear message and the library stays usable for the session
- Export your own items as a JSON backup and import one back. Imports are checked first and you see what will be added and what is skipped before anything is saved. Existing items are never overwritten: an ID clash or changed copy becomes a new item, and identical ones are skipped
- Imported content is only ever treated as text. Webhook URLs and tokens are never saved or exported, and items containing them are rejected on import. Applying an item never sends a webhook or publishes anything
- Tested in a headless browser at desktop and phone widths: saving, refreshing, editing, importing and exporting, invalid and hostile data, blocked storage, keyboard use, and the sidebar navigation, browser history and Embed Builder. Not tested on real phones, Safari or Firefox
v9.7
Example box, Case Converter and layout
- The Example box now starts empty and shows "Example" only as placeholder text. The Case Converter uses the same text, so whatever you type, paste or delete there appears in the converter immediately, with every result updating live
- Typing in the Case Converter's own box updates the Example box too, so there is only ever one copy of the text. Clearing it clears both, and the converter shows dashes instead of copying the placeholder
- While the Example box is empty, the style previews and their Copy buttons still use the word "Example" so the grid is never blank
- Markdown cheat sheet and Case Converter rows now share one aligned layout: name and syntax on the left, the preview in a fixed column, and every Copy button on the right. On narrow screens the preview moves under the name while Copy stays on the right
- Added a button in the header to hide or show the floating Example box. Hiding only hides it, so its text, font size and case choice are kept, and it stays reachable from anywhere on the page. Your choice is remembered in your browser
- Tested in a browser at desktop and phone widths, with the keyboard and with a touch viewport. Not tested on real phones
v9.6
Sidebar tool navigation
- The Discord Tools sidebar now lists every tool by name, grouped under Time, Discord tools, Embeds & webhooks, Formatting and Developer tools, instead of only jumping between categories
- Clicking a tool opens it on its own in the main area with the full width, so the Embed Builder and other larger tools have room to work. The current tool is highlighted, and "All tools" brings back the full overview
- Switching tools only hides the others, so anything you typed in a tool is still there when you come back
- Tools can be linked directly (for example
#tool-embed), and the Popular chips, the browser's back button and bookmarks all open the right tool - Search now also filters the sidebar, and pressing Enter in the search box opens the first result
- On phones the sidebar becomes a collapsible "Tools" menu that shows the current tool and closes after you pick one
- The sidebar entries link to the existing tools. Nothing was duplicated or rewritten
- Tested every sidebar entry in a browser, with the keyboard, and on desktop and phone widths. Not tested on real phones or in Safari
v9.5
Standalone tool pages
- Six tools now have their own pages: Timestamp Generator, Embed Builder, Snowflake Decoder, Permissions Calculator, Markdown Preview and Role Color Converter
- Each page has the working tool at the top, with short instructions, examples, an FAQ and links to related tools
- The pages reuse the same tool code as the main page, so behaviour is identical, including copy buttons, previews, validation and sending from the Embed Builder
- Every tool is still available on the home page, which now links to the standalone pages
- Added the new pages to the sitemap, each with its own title, description and canonical address
- Tested each page directly in a browser, on desktop and mobile widths, with the tool actually used. Addresses are clean (no .html), set up through a small Vercel config file
v9.4
SEO foundations
- Every page now has its own title and description, and a canonical address pointing to the main site
- Links shared on Discord and other platforms now show a proper preview card with a title, description and image
- Added a sitemap and a robots file so search engines know which pages exist
- The home page now has a main heading, and the browser tab icon is a real file
- Corrected the intro text: it claimed nothing you type is ever sent anywhere, which stopped being true with Send to Discord. It now says when something does leave your browser
- Nothing here guarantees search ranking. It makes the site easier for search engines to read, and indexing is up to them
v9.3
Embed Builder: send options
- Added an optional "Send options" section under the webhook URL: bot name, bot avatar URL and thread ID
- Bot name and avatar are sent with the message, and also included in Copy Webhook Payload
- A thread ID makes the message post inside that thread. The webhook still has to belong to the thread's parent channel
- Checked before sending: names containing "discord" or "clyde" (which Discord rejects), avatar URL format, and thread ID format
- The webhook's channel is still decided by the webhook URL itself. Discord does not allow choosing a channel without a bot
v9.2
Embed Builder: send to Discord
- Added a webhook URL field and a Send to Discord button to the Embed Builder, using the same embed object as the preview and JSON
- The URL is checked before sending (https, Discord host, valid webhook path), and the embed is checked against Discord's limits and image/link URLs first
- The status message only says "Sent" when Discord actually accepts the request. Rejections, unknown or deleted webhooks, rate limits, timeouts and network failures each get their own message
- The webhook URL is a password-style field, is never saved to localStorage, and is never logged
- Layout is now Send / Clear / Reset, with Copy JSON and Copy Webhook Payload moved inside "</> View JSON"
- The site now makes two user-initiated calls to Discord: the invite lookup and this Send button. Nothing else leaves your browser
- Tested request building, validation and every error path against a mocked Discord response. I could not post to a real webhook from my environment, so a real-channel send is worth a quick check on your end
v9.1
Embed Builder, rebuilt as a visual editor
- Two-panel layout: edit on the left, live Discord-style message preview on the right (stacks vertically on mobile)
- Added fields that were missing: title URL, author URL/icon, footer icon, and a dedicated message-content box above the embed
- Fields can now be reordered, and each one has an inline toggle
- Added live warnings when you're over Discord's actual limits (title, description, field, footer, author length, field count, 6000-character total) — only shown when something's actually wrong, silent otherwise
- JSON is no longer front and center — it's behind a "</> View JSON" toggle, with Copy JSON and a separate Copy Webhook Payload action
- Added Clear and Reset
- Reuses the same underlying embed object every other tool already reads from (Message Preview, Webhook Message Builder, the Developer category's Webhook Payload tool) — nothing was duplicated or forked
- Hit a real dead end verifying the copy actions — Node 22 ships its own built-in
navigatorglobal that silently blocked my test mock, so clipboard tests looked broken when they weren't. Traced it to the actual cause instead of assuming the feature was broken, then confirmed everything copies correctly
v9.0
General-purpose utilities
- Rather than building duplicate tools, enhanced 4 that already existed: JSON formatter now has a Format/Minify toggle, Base64 got a Clear button, UUID generator can now produce up to 50 at once with a copy-all button, and Unix timestamp converter now includes ready-to-copy Discord tags
- Added URL encoder/decoder
- Added Hash generator — SHA-1, SHA-256, SHA-512 via the browser's built-in Web Crypto API, nothing leaves the browser
- Added Text diff — line-by-line comparison using a proper longest-common-subsequence algorithm, not a naive line-matcher, with a sensible size cap so it can't hang on huge input
- Verified the SHA-256 implementation against an independently-computed known test vector, not just that it produced *a* hash
- All 4 enhanced tools and both fully new tools ran through the full regression suite alongside every existing tool — nothing broke
v8.9
Discord & text tools expansion
- Markdown preview now supports headings, bullet/numbered lists, and links (masked and auto-linked), plus a "Copy raw Markdown" button. Rebuilt as a single shared renderer used by both the preview tool and the Message/Webhook previews, so they can't drift out of sync with each other again
- Markdown cheat sheet — searchable syntax reference with a live rendered example and copy button for each entry
- Webhook message builder — set a username, avatar, and content, see a live local preview (reuses your embed from the Embed Builder if you've made one). Nothing is ever sent anywhere
- 4 new Unicode styles: Superscript, Subscript, Bold Fraktur, Sans Bold Italic — derived from and cross-checked against the same Unicode block structure already powering the existing styles
- New Text Tools section: Symbol Browser (searchable, 6 categories), Divider & Border Generator, Invisible Characters (with an honest explanation of what each one actually does), and a Case Converter
- Mention formatter now explains what each mention type actually does when pinged
- Message length tool now shows word count alongside character/line counts
- Deliberately did not duplicate a "Character Counter" tool — folded its purpose into the existing Message Length tool instead
- Superscript/Subscript intentionally leave unmapped characters unchanged rather than guess — several letters genuinely have no official Unicode superscript/subscript form
- Invisible Characters list deliberately excludes bidi-override characters (the ones used for filename/text spoofing) — only the benign "renders blank" ones are included
v8.8
Styles grid width correction
- v8.7 claimed the grid could reach a 4th column on wide screens — checked the actual math and it was short by 8 pixels, so it silently stayed at 3 columns no matter how wide the window got
- Widened the Styles/Discord Tools content area slightly so a 4th column genuinely fits, with comfortable card width to spare
- Widened the header and footer to match, so nothing looks narrower than the content again
- CSS-only change — script.js untouched, sidebar/mobile layout unaffected, confirmed with the full regression suite
v8.7
Search fix & Styles grid layout
- Fixed a real UX bug: searching Styles while a category filter was active silently hid otherwise-matching results from other categories. Search now spans all categories while typing, and clearing it restores whatever category you had selected
- Added keyword aliases to both the Styles and Discord Tools search (e.g. "gothic" finds Fraktur, "guid" finds the UUID generator) so results aren't limited to exact tool names
- Rebuilt the Styles card grid to size itself to the available space instead of jumping between fixed breakpoints — columns now adapt smoothly to any width, cards stay evenly sized with equal gaps, and a lone last-row card no longer sits awkwardly to one side
- Widened the Styles section slightly on very large screens so the grid can comfortably reach a 4th column
- Mobile layout untouched — same category pills and card behavior as before
v8.6
Bug sweep
- Fixed the Message Preview tool silently failing to render single-asterisk italics and blockquotes — the standalone Markdown Preview tool had this working, but the Message Preview used a slightly older copy of the same logic that was missing both
- Fixed invite links with a trailing slash (a common copy-paste artifact) failing to parse in the Invite Formatter
- Full correctness pass on the math: re-verified snowflake decoding, all 32 permission bit values, hex/RGB/decimal color conversion, Base64 UTF-8 round-tripping, UUID format, and timezone/DST calculations directly, not just visually
- Confirmed the Invite Lookup remains the only feature that contacts an external API, and that it fails gracefully
- Confirmed every original tool is still present and untouched — nothing was lost across the last several updates
v8.5
Responsive polish pass
- Fixed a real mobile overflow bug — the header could exceed the viewport width on phones around 360-390px wide (the "Support server" text link plus 3 icon buttons didn't fit; it's already in the mobile menu, so removed the duplicate)
- Fixed the Timestamp Builder's Local/UTC and 12h/24h toggle buttons, which had a fixed width sized for 2-character labels and could clip longer text like "Local"
- Widened the header and footer to match the rest of the site's content width on large screens, instead of looking narrower than the sections below them
- Audited spacing, wrapping, hover behavior, and background performance across desktop, tablet, and mobile — full regression pass confirmed nothing else broke
v8.4
Timezone comparison
- Timestamp builder can now compare multiple timezones at once — searchable city/timezone picker instead of a giant dropdown
- Each row shows local time, UTC offset, and a date badge when it crosses into a different day
- Fully DST-aware and correctly handles midnight-crossing in both directions, using the browser's built-in timezone data — no external lookups
- Add/remove rows freely; your list is remembered next time you visit
- Stays connected to the rest of the tool — same presets, 12h/24h toggle, and Discord tags as before
v8.3
Changelog page
- Added this page — a proper version history instead of a dead footer link
- Matches the main site's theme automatically, including your saved light/dark preference
v8.2
Ambient background & interaction polish
- Added a subtle, slow-drifting background glow and a faint grid texture for depth — fully static under reduced-motion
- Smooth hover transitions across cards and buttons: a small lift on style/template/palette cards and primary buttons, gentle color fades on smaller pills and icons
v8.1
Quality-of-life fixes
- The main text input now stays visible (sticky) while scrolling through Styles, Discord Tools, or anywhere else
- Updated the support server invite link across the header, mobile menu, and footer
- Fixed category/quick-link jumps landing partially hidden behind the sticky bars
- Fixed a mobile-menu overlap edge case with the sticky input
v8.0
The Discord Tools update
New tools, across 9 categories
- Time — Timestamp builder: presets, 12h/24h, local/UTC, live relative-time preview, Unix timestamp, all 7
<t:…>formats explained - IDs — Snowflake decoder, CDN image URL builder
- Permissions — bidirectional calculator (checkboxes ↔ integer)
- Colors — role color converter with a live preview pill
- Embeds — visual embed builder with live preview and copyable JSON
- Emojis — custom emoji tag inspector/builder
- Invites — offline link formatter, plus an optional public info lookup
- Text — markdown formats, templates, ANSI colors, message length, text cleaner, markdown preview, mention formatter, message preview
- Developer — JSON formatter, Base64, UUID generator, Unix converter, webhook payload builder
Layout & navigation
- Sidebar-style category navigation on desktop instead of one long row of tools
- Wider layout, "Popular" quick-links, and a live tool search
- Mobile layout unchanged — still no horizontal scrolling
Fixes
- Fixed a page-load error that could break interactivity
- Fixed a filter-state bug between Styles categories and the sidebar
Built by one person, improved whenever something bugs me about it.