Back to ToolKnit
Blog Tool Tales
Changelog

Every update, documented.

A running journal of every new tool, refinement and late-night fix that has shaped ToolKnit since launch day.

Long-Tail Blog Expansion, Schema Cleanup & Homepage Footer Fixes

NEW BLOG POSTS
  • Flashcard Maker Online Free — A long-tail study guide covering front/back card creation, flip review, quiz mode, CSV/TXT import, JSON backups and private localStorage decks.
  • Online Signature Maker Free — A practical transparent PNG signature guide for drawing or typing signatures for PDFs, forms, documents and email workflows.
  • Online Metronome Free — A rhythm practice guide for BPM, tap tempo, time signatures, subdivisions, guitar, piano and drum practice.
SCHEMA
  • Holidays Event noise reduced — All 15 country pages under /holidays/ were moved away from Event rich-result markup and now use a cleaner CollectionPage + ItemList pattern to better match country holiday directory intent.
  • Tool schema normalized — Removed unverifiable aggregateRating markup from all 64 tool pages and added BreadcrumbList so tool templates follow a cleaner, lower-risk structured data baseline.
  • Blog schema normalized — Added BreadcrumbList across 74 blog article pages and aligned the homepage SearchAction with a real ?q= search flow.
BUG FIX
  • Homepage footer categories now work — Footer category links now scroll back to the Tool Library, apply the matching filter, and center the active category tab instead of only changing the URL hash.
  • Sell With Boost badge added — Added the requested homepage footer badge using the provided dofollow-compatible link format.
UPDATE
  • Content library updated — Blog index, sitemap, homepage content modal and release documentation now reflect 103 published resources: 65 Blog Guides, 9 Tool Tales and 29 Changelog entries.
  • Release docs updatedtoolknitSkill.md now records the current schema baseline, the holidays directory rule, the tool/blog breadcrumb requirement, and the footer interaction fix.
  • Service worker cache bumped to v51

Flashcard Maker Launch & Signature Maker Preview Fix

NEW TOOL
  • Flashcard Maker — Create front/back study cards, flip through a deck, shuffle review order, and quiz yourself with Reveal plus Again/Good/Easy self-rating. Try it →
  • Private study workflow — Decks autosave in localStorage, import CSV/TXT pairs, export JSON backups, and use Space plus arrow-key shortcuts for fast review.
BUG FIX
  • Signature Maker preview contrast — When black ink is selected in draw or type mode, the preview area now switches to a white preview background so the signature remains visible while editing.
  • Transparent output preserved — The white preview is visual only; downloaded and copied PNG signatures still keep a transparent background.
  • Homepage content count updated — The homepage article/resource total now reflects 99 published resources after this changelog entry.
UPDATE
  • Tool library updated — Homepage, search, stats, sitemap, manifest, service worker and related-tool pools now include 65 total tools, with Creative updated to 19 tools.
  • Service worker cache bumped to v47

Signature Maker, Metronome, Homepage Polish & SEO Sweep

NEW TOOL
  • Signature Maker — Draw your signature by hand (mouse, touch, or stylus) or type your name in elegant cursive fonts. Download as transparent PNG for documents, contracts, and emails. Adjustable pen size and ink color, undo support, and clipboard copy. Try it →
  • Metronome — Free online metronome with adjustable tempo from 30 to 300 BPM, six time signatures (2/4 through 7/8), subdivisions (8th, 16th, triplet), tap tempo, and four sound types. Built on the Web Audio API with a lookahead scheduler for sub-millisecond timing accuracy. Try it →
SEO OPTIMIZATION
  • On-page SEO — Rewrote title tags, meta descriptions, and H1 headings for 9 high-traffic pages based on SEMrush keyword data (233 tracked keywords). Prioritized front-loading target keywords with highest search volume.
  • Pages optimized: CPS Test, Random Spinner, Character Counter, Aim Trainer, Whiteboard, WebP to PNG, Keyboard Tester, Dice Roller, Reaction Time Test
  • FAQ Schema fix — Removed duplicate FAQPage structured data from Extract Text tool (resolved GSC “Duplicate field” error)
  • Disavow file — Created disavow.txt with 120+ spam/PBN domains for Google submission
UPDATE
  • Total tools: 64 (Audio category now has 3 tools)
  • Homepage stats refined — Replaced duplicate visible/tools counters with a clearer 64-tool total, a clickable 98-resource article count modal, 8 categories, and dynamic stable uptime based on the March 18 launch date.
  • ToolKnit mascot added — Added a tiny 4-frame spider sprite above the Tool Library card. The animation uses CSS sprite steps with forward/reverse looping, stays hidden on mobile, and weighs only 416 bytes.
  • Flashcard Maker planned — Documented the next tool roadmap for May 24, including localStorage decks, flip study mode, quiz mode, and CSV/TXT import/export.
  • Service worker cache bumped to v43

The AI to PNG & Second Milestone Edition

NEW TOOL
  • AI to PNG — A new browser-based converter for Adobe Illustrator files saved with PDF compatibility. Export supported AI files to PNG locally, preview every page or artboard, and download single images or a ZIP batch without uploading assets to any server.
NEW BLOG POST MILESTONE
  • My second independent project is now live — A separate image-focused project officially launched today. It started around AI image generation, and it may gradually grow into its own image-first utility toolbox alongside ToolKnit.
  • Release references updated — Blog index, sitemap, service worker precache, homepage counters, public stats naming, and release documentation were all updated to include the AI to PNG launch and the end-of-day IndexNow workflow.
A note from the developer

It’s May 19 here in China, and it has been raining for several days straight. I’ve actually been in a very good mood lately, which slowed the update rhythm a little — but today I still made time to ship something I really wanted on ToolKnit: AI to PNG.

I like this one because it fits so naturally into the rest of the site. Convert an Illustrator file to PNG first, then run it through Background Remover if you want a transparent result. It’s a simple workflow, but it feels incredibly useful for logos, graphics, stickers, and quick handoff assets.

Today also marks another personal milestone: my second project is officially online. It used to lean more toward AI image generation, but lately I’ve been thinking that building it into a sharper image toolbox might be even more fun. ToolKnit will stay broad. The other site can stay more image-focused. Two independent sites, both moving forward at the same time — that makes me really happy.

As for life, it’s been good. I’ve been working seriously, coding seriously, and trying to keep showing up every day. Tomorrow is May 20, so let me say it a little early: I hope everyone gets to spend that special day well with the person they love.

We’re still here. And we’ll keep building.

Zihang Dong May 19, 2026 — rainy season, but still a very good day

The Homepage Simplification

UI / UX
  • Hero section removed — Eliminated the standalone hero area entirely. The Tool Library card now serves as the primary above-the-fold content, giving users immediate access to tools without scrolling.
  • SEO preserved — Promoted the Tool Library heading from <h2> to <h1>; all meta tags, Open Graph, and structured data remain intact.
  • Content width expanded — Increased from 1200px to 1500px effective content width, with a 4-column tool grid on ≥1440px screens.
  • Navigation bar refinements — Added 25px padding on each side for breathing room; pill indicator now waits for fonts.ready before measuring to fix first-visit width glitch.
  • Search box alignment — Unified all container max-width and padding so the search bar, filter strip, and tool grid share identical left/right edges.
  • Language toggle fix — Fixed restoreAll() corrupting filter button innerHTML when switching languages (was treating data-label as textContent).
  • Full Chinese translation — Tool Library kicker, heading, description, and all four stat labels now translate correctly; added cache-busting ?v=32 to i18n.js and zh.json.
A note from the developer

Today I only managed one thing — redesigning the homepage. Slept poorly both during the day and at night, brain running on fumes. Finishing this round of UI tweaks was genuinely the limit of what I could push through.

Removed the big Hero section entirely. Now when you open the homepage, the tool library cards are right there — no more scrolling past a decorative splash to find actual tools. Widened the content area to 1500px so widescreen monitors finally aren’t wasting space. Also squashed the language-toggle bug where icons disappeared after switching to Chinese and back — root cause was restoreAll() treating data-label as textContent. One conditional fixed it.

Planning to rest properly for a couple of days. Catch up on sleep, let the brain recharge, then keep optimizing. The site won’t go dark — just slowing the pace for a moment.

Health first. Goodnight.

Zihang Dong May 19, 2026 — 12:30 AM, barely awake, finally done

The Haircut & Housekeeping Edition

SEO & INFRASTRUCTURE
  • Backlink disavow — Identified and submitted 63 spam/PBN domains to Google Search Console and Bing Webmaster disavow lists. Merged with 14 domains from an earlier April audit.
  • Homepage URL canonicalization — Fixed href="index.html"href="/" across 6 root-level pages to consolidate link equity on a single canonical URL.
  • Nginx rewrite rules — Added www → non-www 301, /index.html → / 301 (using $request_uri to avoid index-directive loops), and /blog/tools/* → /tools/* 301 for stale external links.
  • Meta description audit — Shortened 21 pages (8 tool pages + 13 blog posts) from 161–180 characters down to ≤155. Discovered and rewrote 3 blog pages (percentage-calculator, markdown-editor, unit-converter) whose descriptions were accidentally copy-pasted from the Pomodoro timer template.
  • Title tag audit — Trimmed 15 blog post titles from 71–86 characters down to ≤60 to prevent SERP truncation.
  • Keyword optimization — Rewrote title/description for whiteboard (now leads with “Online Whiteboard” to match search queries), keyboard-tester (shortened to 56 chars), and webp-to-png (description now includes exact search phrase + privacy angle).
A note from the developer

Nothing dramatic happened on the 16th. I got a haircut — it was fine, not a disaster, just overdue. Kind of like the website's meta descriptions and title tags, actually: they'd gotten too long and needed a trim. So today I trimmed both.

Still thinking about my baby. Every waking moment, honestly — even while I'm reading regex patterns and counting character lengths. I want to see her, but today there was no arrangement, haha. Tomorrow evening then. Well, technically it's already tomorrow — it's past midnight as I write this.

Got off work half an hour late. Went home, ate, got the haircut, played some games, then came here to polish ToolKnit. The email subscription feature still isn't wired up, but it's coming soon. I need a small group of loyal users to beta-test new features — if that sounds like you, shoot me an email. I'd love to hear from you.

Development has been tiring lately and the update pace might slow down a bit — but I'll always be here. This project isn't going anywhere.

It's the middle of the night and I'm still thinking about her. She's impossibly cute. I think about her when I'm coding, when I'm deploying, when I'm writing these notes. Tonight after work though — we'll meet. I miss her so much that just writing this makes me want to fast-forward the entire day.

Alright. By the time you read this, I've already deployed the new version and pushed IndexNow. My brain needs sleep. Goodnight, and thank you for reading.

Zihang Dong May 17, 2026 — 1 AM, freshly trimmed, heart still full

The World Holidays Edition

NEW FEATURE NEW BLOG POST
  • World Holidays Calendar 2026 & 2027 — 3,400+ Holidays by Country — The story behind the new feature: where the data comes from, country-by-country highlights (Japan's Golden Week, China's lunar holidays, Singapore's multicultural calendar, the surprising fact that Carnival isn't officially a federal holiday in Brazil), and the limitations we're transparent about.
IMPROVEMENTS
  • Homepage light-mode toggle — A new sun/moon button in the top-right of the homepage lets you switch between dark and light themes. Preference is stored locally and respected on the new Holidays pages too.
  • Light-mode polish below the tools list — Architecture, Local Sandbox, CTA and Footer sections received a comprehensive light-mode color pass. The Local Sandbox terminal card now stays dark in light mode (it's a terminal — it should look like one) and its hover state no longer breaks.
  • Sitemap, llms.txt, service-worker — All updated to include 17 new URLs. SW cache bumped to toolknit-v27.
A note from the developer

If you read the last entry, you know I said I was going to see her. I'll keep my promise to be honest with you, so here it is, plainly: we're back together.

I drove over not knowing what to expect — I'd rehearsed a dozen versions of the first sentence in my head and forgotten every one of them by the time the elevator opened. She was already standing there. Before I could get a word out, she walked over and pulled me into the biggest hug she's ever given me. That was it. That was the whole conversation, really. Everything after was just clarification.

We talked for hours. About what went wrong, about what we'd been carrying around the last few days, about the things that look enormous in a 2 AM text and shrink the moment you say them out loud in daylight. I missed her. She missed me. Turns out you can absolutely solve in one in-person afternoon what two weeks of screens and pride and silence couldn't fix. Maybe that's the only lesson worth taking from any of this: if it matters, see them. Don't text. Don't wait. Look them in the eye.

I love her. I didn't want to lose her. I didn't lose her. That's all I'll say about it here — this is a changelog, not a diary, and she deserves more privacy than a public webpage can give her.

On the work side: today's update is the World Holidays Calendar — 3,469 holidays across 122 countries, a hub page, fifteen country pages, an 11-minute blog post, a unified footer pass across every new page, and the homepage light-mode toggle a lot of you have been asking about since launch. It went out cleanly. I'm proud of it.

I should have shipped this yesterday and written this note then, but I barely slept the night before the reunion — nerves — and last night I didn't sleep much either, just for the opposite reason. There's a particular kind of tired you get when you're too happy to close your eyes, and I've been wearing it for about thirty-six hours now. So I'm going to keep this short.

Tomorrow I'll start on the email subscription feature — you drop your address in a box at the bottom of the changelog, you get an email when there's a new entry. No marketing, no tracking. Just a heads-up when something new ships. It'll take a few days to wire up without compromising the no-server promise; I'll figure it out.

Thank you for reading. Honestly. Some of you have been here through entries about broken keyboards, bad barbecue, botanical gardens, and one very bad night. I hope this one balances the ledger a little.

Going to sleep now. Properly this time. Goodnight.

Zihang Dong May 15, 2026 — midnight, eyelids losing the fight

The Botanical Garden Edition

NEW BLOG POSTS IMPROVEMENTS
  • Blog index updated — Calculator Tools category now lists 5 articles (up from 3). Every one of the 60 shipping tools now has a corresponding blog post. Coverage: complete.
  • Site-wide consistency pass — Verified all 60 tool pages, repaired remaining stray <section> attribute artifacts, and confirmed the Pro Tips bullets render correctly across the entire catalog.
A note from the developer

I didn’t write this entry yesterday. I couldn’t. Yesterday was the day after she said no, the day after I deleted her contact, the day after I went to bed without dinner. I needed to put a buffer between that night and a keyboard.

So on the morning of the 12th, I drove to the botanical garden alone.

It was the wrong season. I’d been picturing color — tulips, peonies, anything — but the beds were mostly green, the paths half-empty, the camellias already past their bloom. I walked the loop once and felt the silence start to weigh more than the trees. So I did the only thing I knew how to do: I texted a friend and asked if he could come keep me company. He showed up an hour later without a single question. That’s the kind of friend you keep for life.

We wandered for hours. Talked about nothing important. Took a turn we shouldn’t have taken. At some point we looked up and realized we’d walked clean out of the garden, past a gate neither of us remembered passing through, and were standing on a suburban road with nothing but fields on one side and warehouses on the other. No shared bikes. No bus stop in sight. Just two guys, very lost, very tired, laughing because what else are you supposed to do.

We called a taxi. The driver took twenty minutes to find us. My phone said 18,427 steps. My legs agreed.

Then we made one final mistake: we tried to recover with food. Found a barbecue place that looked promising. It was, without exaggeration, the worst skewers I’ve eaten in my adult life. Burnt outside, raw inside, salted like someone had a vendetta. We ate it anyway because we’d earned the right to a complete bad day.

I got home that night, dropped onto the bed, and realized something quiet: the day had been a mess, the season had been wrong, the food had been terrible — and I felt okay. Not happy. Not healed. Just… lighter than the night before. Sometimes that’s all a day is supposed to do.

And then this morning, the 13th, my phone lit up with her name.

She wants to see me. Tomorrow.

I don’t know what to make of it yet. I don’t know what she’ll say, what I’ll say, whether we’re fixing something or just giving it a proper ending. But I know this: I’m not going to let pride or fear or the memory of one bad night make me miss the chance to look her in the eye one more time.

I don’t want to lose her again. If there’s any version of us that can work, I owe both of us the honesty of finding out face-to-face — not over a screen, not through silence.

So today’s update is short. Two blog posts. A coverage milestone — every one of the 60 tools on ToolKnit now has a written guide behind it. A clean, quiet shipping day. The kind that doesn’t make headlines, but matters for the people who actually use the site.

Tomorrow is for her. Tonight is for finishing this entry, closing the laptop a little earlier than usual, and trying to sleep without rehearsing every possible sentence in my head.

If you’re reading this — thank you for sticking around through these long, very personal changelogs. I started writing them this way because shipping software in silence felt dishonest, and because some part of me needed someone, somewhere, to know there was a real human on the other side of the deploys. Turns out that human cries, gets lost in botanical gardens, eats bad barbecue, and still shows up the next morning to push code.

Wish me luck.

Zihang Dong May 13, 2026 — 11:30 PM, the night before

The Rest Day Edition

NEW TOOLS
  • Tip Calculator — Calculate tip amount, total bill, and per-person split. Custom tip percentage slider, preset quick-select buttons, and instant breakdown for group dining.
  • Mortgage Calculator — Monthly payment estimator with principal & interest breakdown, full amortization schedule, and interactive chart. Supports custom down payment, interest rate, and loan term.
NEW FEATURES
  • Homepage Chinese translation — Added i18n support for the homepage. A “中文” toggle button in the top-right corner switches all visible text to Simplified Chinese. Default is English; user preference is saved to localStorage.
  • Language toggle button — Appears next to Blog / Tool Tales links. One click to switch, persists across sessions. Does not affect SEO-critical elements (title, meta, JSON-LD).
DESIGN
  • Hero kinetic typography — The homepage hero section now features a dynamic background of scrolling keyword rows. Seven rows of tool names, file formats, action verbs, and brand values scroll in alternating directions at different speeds. Pure CSS animation, zero JavaScript overhead, 60fps.
  • M-layout masking — The scrolling text is masked with a CSS mask-image gradient so it only appears on the left and right sides of the content area, fading naturally at the boundaries. The central content zone stays clean and unobstructed.
CLEANUP
  • Removed experimental WebGL fluid gradient, caustic light, and particle effect scripts. The kinetic typography approach won out — lighter, cleaner, more on-brand.
  • Cleaned up hero-fx.js and hero-particles.js from both local and server.
A note from the developer

Today was a day off. No design studio, no mockups, no overtime. I took it because I needed it — not for my body, but for something heavier.

Around the time I started building ToolKnit in March, I met a girl. She was a client — her apartment was 80% through renovation when she reached out one night past 11 PM. I thought she wanted floor plan changes. She wanted to talk.

We talked for two weeks straight. She was from Zhengzhou, four years older, back in Zhoukou visiting. I’m the kind of person who freezes at the thought of meeting someone in real life, but I pushed through the anxiety and went to see her. And it was — effortless. We had dinner. The next day we watched a movie together. Everything felt right in a way I’d never experienced before. I had never liked anyone this much. Never missed anyone this much.

She left in late April. We kept in touch every day. She told me she was looking for something serious — not casual. I respected that completely. All I asked was one simple thing: on May 1st, when she came back, could we just spend a quiet day together? Just lying around, doing nothing, recharging. She said yes.

Yesterday she came back. And she told me she couldn’t do it. Her phone has location tracking; her family would see. I understand that — I do. But it wasn’t the refusal that broke me. It was the timing. She had agreed weeks ago. I had been counting down the days, carrying that small promise like a lantern through every exhausting shift. If she had just said no back then, I would have been fine. I would have understood.

Instead, I spent yesterday evening crying alone in my room. She didn’t comfort me. She said I shouldn’t have asked in the first place. And then came the line that cut deepest: “I don’t think I count as your girlfriend yet.”

I asked her what we were, then. She said: “Someone I’m getting to know.”

I made the decision through tears, typing on my phone with shaking hands. I told her it was over. She didn’t agree. She didn’t disagree. She just — went silent. Cold. She once told me that after a breakup, there should be no contact. So I deleted everything.

I skipped lunch and dinner yesterday. Went to bed at 9 PM. Woke up this morning to zero messages. I think that’s the answer I was afraid of.

The thing is — I really, truly liked her. Her personality, the way she talked, the way she made an anxious 21-year-old feel calm for the first time in years. I had never felt that before. Two meetings and I was in deep. But she never shared her meals with me. Never sent photos unless I asked. In three weeks, she sent me exactly three videos. Do you know what it’s like to miss someone and have almost nothing to look back at?

She never understood how I loved. And maybe that’s okay. Maybe some people just show it differently, or not at all. But I can’t keep pouring into something that echoes back silence.

So today I rested, and I coded. Shipped two new calculators. Built a kinetic typography background that I’m actually proud of. Added Chinese to the homepage because — well, because this is where I’m from, and today felt like a day to honor that.

I’m writing this here because almost nobody reads changelogs. It’s the quietest corner of the internet. If you’re reading this, you’re either very thorough or very bored — either way, thank you. Sometimes you just need to put the words somewhere, and a changelog felt more honest than a diary.

To the girl from Zhengzhou: I hope you find what you’re looking for. I genuinely do. And I hope one day you realize that the boy who cried himself to sleep wasn’t asking for much — just a quiet day, and a little bit of your heart.

Zihang Dong May 12, 2026 — 2:10 PM, a rest day

The Overtime & Power Outage Edition

NEW TOOLS
  • Daily Planner — Beautiful weekly planner with customizable time slots, drag-and-drop tasks, and pixel-perfect PNG/PDF export powered by Canvas 2D API. Includes FAQ section.
  • BMI Calculator — Body Mass Index with metric/imperial toggle, visual WHO category scale, color-coded results, and healthy weight range display.
  • Timestamp Converter — Unix epoch ↔ human-readable date. Auto-detects seconds vs milliseconds, live ticking clock, bidirectional conversion.
  • Text Diff — Compare two texts side by side with line-level and character-level diff highlighting. Summary bar for additions, deletions, and unchanged lines.
  • Flip & Rotate Image — Mirror horizontally/vertically, rotate 90°/180°/270°. Canvas API powered, supports JPG, PNG, WebP, and more.
  • Gradient Generator — Visual CSS gradient builder with linear/radial modes, multi-stop color picker, angle control, preset gallery, and one-click CSS copy.
IMPROVEMENTS
  • Daily Planner export rewrite — Replaced html2canvas with direct Canvas 2D API rendering. Pixel-perfect alignment, zero offset, no more CSS rendering discrepancies. Lesson learned: when a simple solution exists, use it.
  • Daily Planner FAQ — Added structured FAQ section with JSON-LD for SEO rich results.
  • Dynamic counting everywhere — Blog article count, category count, stories count, homepage tool count, and status page tool/category count are now all calculated dynamically from the DOM. No more hardcoded numbers to forget updating.
  • Status page DR badge — Domain Rating 29 by Ahrefs, displayed alongside uptime stats in the hero card.
  • Partnership link — Added to all 132 page footers for business and collaboration inquiries.
NEW BLOG POSTS FIXES
  • Fixed Daily Planner export rendering — badges, date numbers, and dividers now align perfectly in PNG and PDF output.
  • Fixed blog index showing 51 articles when actual count was 52 — root cause: hardcoded number. Now impossible to get wrong.
  • Fixed status page hardcoded “58 tools” and “8 categories” — now fetched dynamically from search.js.
A note from the developer

My boss made me stay late today. Five straight hours in the design studio, hunched over mockups that weren’t even mine, while the clock crawled past 6 PM — the time I was supposed to leave. I finally walked out at 7. An hour doesn’t sound like much until it’s the hour between you and the thing you actually want to be doing.

Got home. Dropped my bag. Opened the laptop. Fingers on the keyboard, terminal ready, brain already compiling the night’s todo list…

And then the power went out.

I sat there in the dark for about four seconds, already composing a dramatic complaint tweet in my head. Then — click — the lights snapped back on. The screen glowed. The cursor blinked. I took it as a sign: tonight’s update was going to be a good one.

Six new tools shipped. Seven new blog posts. A complete export engine rewrite for Daily Planner — ripped out html2canvas entirely because I finally admitted that a library that re-implements CSS will never match the browser that actually implements CSS. Replaced it with raw Canvas 2D API calls. Pixel-perfect. Zero offset. Sometimes the simplest solution is the one you should have picked first.

Then I went on a counting spree. Every hardcoded number on the site — “51 articles,” “58 tools,” “8 categories” — all of them replaced with JavaScript that counts the actual DOM elements. Add a new tool card? The homepage says 59+. Publish a blog post? The counter says 59. No more forgetting to update a number in three different files.

132 pages got a new Partnership link in their footer tonight. The status page got a DR 29 badge — verified by Ahrefs. I check our backlink profile about thirty times a day. It’s not healthy. But every new referring domain feels like someone out there noticed what we’re building, and that dopamine hit is better than coffee.

Speaking of which — if ToolKnit has ever saved you five minutes, or helped you avoid installing yet another sketchy desktop app, tell someone about it. Share it on your blog. Drop it in a Reddit thread. Mention it to a friend who still emails PDFs to themselves. Every recommendation means the world to someone writing code alone at midnight.

It’s past midnight now. Tomorrow the alarm goes off at 7:30 and I’ll be back in that design studio pretending I didn’t stay up until 1 AM pushing CSS to a server. But look at what got done tonight. Five tools, seven blogs, a full rewrite, a site-wide dynamic counting overhaul, and a power outage that lasted exactly long enough to make a good story.

Worth it.

Zihang Dong May 11, 2026 — 00:45 AM

50+ Tools — A Midnight Milestone

NEW TOOLS
  • Unit Converter — 8 categories: length, weight, temperature, area, volume, speed, data & time. Bidirectional, real-time, with conversion formulas.
  • Percentage Calculator — Three modes: “X% of Y”, percentage change, and “X is what % of Y”. Color-coded results.
  • Markdown Editor — Side-by-side live preview powered by marked.js. Export .md, copy HTML, word/char/line stats.
NEW CATEGORY
  • Introduced Calculator Tools — a brand-new category housing Age Calculator, Unit Converter, and Percentage Calculator. Dedicated filter tab on homepage and blog.
UPDATES
  • Tool count updated to 52 across all pages. Service-worker cache bumped to v18.
  • Blog posts published for all 3 new tools. Blog article count now 51.
  • Full-site encoding fix — repaired garbled em-dash characters (&#xFFFD;) across 46 tool pages.
  • Homepage stat pills corrected to match actual category counts.

It’s 12:30 AM again. The apartment is quiet, the screen is the only light, and the terminal cursor blinks like a heartbeat.

Fifty tools. I remember the first one — a nervous Compress PDF page pushed to a server I could barely configure. That was March. Now there are fifty-two of them, each one built in the strange hours when the world sleeps and the code feels like it writes itself.

Nobody tells you that building something alone is less about the code and more about the silence you fill with it. Every late-night deploy, every 3 AM bug that makes you question your life choices, every sunrise you accidentally witness — they all become part of the thing you’re making.

ToolKnit crossed 50 tools tonight. Not with a launch party or a press release, but with me, a mass SCP upload, and a mass of garbled em-dashes that made me rethink my encoding decisions. Fitting, really.

Here’s to the next fifty. Same chair, same dark room, same quiet conviction that free tools should just work — no sign-ups, no tracking, no nonsense. If you’re reading this changelog at midnight too, I see you.

— Zihang Dong, May 9 2026, 00:30 AM

7 New Tools — Biggest Single-Day Drop Yet

NEW TOOLS
  • Fancy Text Generator — 20+ Unicode font styles. One-click copy for Instagram, TikTok, Twitter/X, Discord.
  • Age Calculator — Exact age in years/months/days/hours, zodiac signs, birthday countdown.
  • Typing Speed Test — WPM, accuracy & keystroke tracking with 15/30/60s timed tests.
  • HEIC to JPG Converter — Batch convert iPhone HEIC photos to JPG. Adjustable quality, WebAssembly-based.
  • JSON Formatter & Validator — Beautify, validate, and minify JSON. 2/4 space indent, file loading, clipboard paste.
  • Invoice Generator — Create invoices & download PDF. 10 currencies, auto tax calc, unlimited line items.
  • Pomodoro Timer — Focus/break intervals with session tracking, auto-start, and audio alerts.
UPDATES
  • Tool count updated to 49 across all pages, service-worker cache bumped to v17.
  • Blog posts published for all 7 new tools.
  • Full-site encoding fix — repaired corrupted Unicode characters across 29 files.

Background Remover — AI-Powered Image Background Removal

NEW TOOL
  • Background Remover — Remove image backgrounds instantly using an AI model that runs entirely in your browser. Auto-remove with one click or manually refine with brush & eraser tools. Supports JPG, PNG, WebP. Downloads as transparent PNG.
  • AI model (~40 MB) downloads once and is cached by the browser for instant future use.
  • Manual refinement mode with adjustable brush size, edge softness, undo, and keyboard shortcuts.
  • Full-screen loading overlay prevents interaction until the model is ready.
  • Tool count updated to 42 across all pages.

Coin Flip, Dice Roller & Legal Pages Refresh

New Improvement
  • Coin Flip — Flip a coin online with a 3D CSS animation. Fair 50/50 random result, flip history, heads-vs-tails probability bar, current & best streak tracking, and spacebar shortcut for rapid flips.
  • Dice Roller — Roll 1 to 6 standard dice with animated tumble. Live value distribution chart, roll history, grand total & average stats. Number keys 1–6 to switch dice count, spacebar to roll.
  • Coin Flip & Dice Roller Blog Post — Guide covering when to use each tool, the math behind virtual randomness vs physical coins/dice, and 5 creative use cases.
  • Terms of Service & Privacy Policy updated — Rewrote both pages to accurately reflect current site state: no accounts, no personal data collection, 500 free uses/day via localStorage, third-party analytics & CDN disclosures, and offline access via service worker.
  • Replaced RewriteEmail.com footer link site-wide with B64Encode.com reciprocal link across all pages.
  • Homepage updates — Coin Flip and Dice Roller added to the Creative Tools card grid, both marquee tracks, search index, and roadmap modal.
  • Updated sitemap.xml, service-worker.js (bumped to toolknit-v5), and indexnow-submit.py with all new URLs.

CPS Test & SEO Refresh

New Improvement
  • CPS Test — New click speed test with 1 / 5 / 10 / 30 / 60 second modes, live CPS, best 1-second burst, consistency score, per-second bar chart, and locally saved personal bests. 100% browser-based, works on desktop and mobile.
  • CPS Test Blog Post — Long-form guide covering what CPS means, what counts as a good score, how each duration mode is used, common clicking techniques, and how to improve click speed safely.
  • Tightened CPS Test interaction state — active runs can no longer be re-armed, and clicks after the timer ends are ignored to keep results clean.
  • SEO refresh on high-impression tool pages — Rewrote titles, meta descriptions, social metadata, JSON-LD, and hero copy on Keyboard Tester, Character Counter, Whiteboard, and Reaction Time Test to better match real search intent.
  • Added internal links from Reaction Time Test and Aim Trainer to the new CPS Test, and added CPS Test to their related-tools pools.
  • Site search and roadmap updated — CPS Test indexed in search.js with full keyword coverage. Service worker bumped to toolknit-v4.

Aim Trainer & Login System Removal

New Improvement
  • Aim Trainer — New FPS aim practice tool. Click targets as fast as you can with adjustable speed (Fast / Medium / Slow), custom target count (10 / 20 / 30 / 50), 3-2-1 countdown, and detailed results including average click time, best/worst, total time, per-target bar chart, and performance rating.
  • Aim Trainer Blog Post — Comprehensive guide on how to use an aim trainer, practice routines, pro tips, and benchmark scores.
  • Removed login & registration system — The entire login/signup system (modals, API endpoints, JWT auth) has been removed. All users now get 500 free uses per day with no account required. Simpler, faster, no barriers.
  • Deleted backend API files (login.php, register.php, verify.php, usage.php). Usage tracking is now 100% client-side via localStorage.
  • Streamlined auth.js from 789 lines to 165 lines — now only handles toast notifications and local usage tracking.

Image Resizer & Lorem Ipsum Generator

New
  • Image Resizer — Resize any image to exact dimensions, by percentage, or with one-click social media presets. Supports JPG, PNG, and WebP output with quality control. Lock aspect ratio to prevent distortion.
  • Lorem Ipsum Generator — Generate placeholder text for designs, mockups, and prototypes. Choose paragraphs, sentences, or words. Toggle classic opening, optional HTML <p> tag wrapping.
  • Redesigned "You May Also Like" section across all tool pages.
  • Fixed homepage search missing 9 tools — all 35 tools now searchable.

Pixel Art Converter & Video to Audio

New
  • Pixel Art Converter — Turn any image into pixel art. Adjustable pixel resolution (8–256), color palette control (2–128 colors), Floyd-Steinberg dithering, Sobel edge detection outlines, saturation boost, and retro console presets (Game Boy, NES, SNES, CGA).
  • Video to Audio — Extract audio from any video file (MP4, WebM, MOV) and download as lossless WAV. Uses the Web Audio API for fast, high-quality extraction.
  • New blog post explaining the algorithms behind the converter.
  • New blog post on browser-based audio extraction.

Keystroke Counter & Changelog Page

New Improvement
  • Changelog page — You're reading it. A full history of every ToolKnit update, organized by date with internal links to each tool.
  • Keyboard Tester now tracks keystroke counts per key. See exactly how many times each key was pressed, helping you detect stuck or double-firing keys.
  • Follow our build journey on Creem.

QR Code Generator & SEO Improvements

New Improvement Fix

Reaction Time Test

New
  • Reaction Time Test — Test your reflexes with 4 game modes: click, spacebar, visual choice, and speed round. Results shown in milliseconds with performance ratings.

Keyboard Tester & Random Spinner

New
  • Keyboard Tester — Visual keyboard map that lights up on every key press. Instantly identify broken, stuck, or unresponsive keys. Supports full-size and compact layouts.
  • Random Spinner Wheel — Customizable spinning wheel with up to 15 options. Add your choices, spin the wheel, and get a random result.

Creative Tools: Drawing Board, What to Eat & Ask Fate

New
  • Online Drawing Board — Free whiteboard with pen, pencil, calligraphy brush, and sketch coloring modes. Add shapes, text, and images. Export your work as PNG or PDF.
  • What to Eat? — Can't decide on a meal? Pick breakfast, lunch, or dinner and get a random food suggestion.
  • Ask Fate — Type a yes-or-no question and receive a mystical answer. One question per day — let the universe decide.

Image Crop & Grid Splitter

New
  • Image Crop — Crop images with custom aspect ratios. Supports freeform, square, 16:9, 4:3, and more.
  • Image Grid Splitter — Split any image into a grid (3×3, 2×2, etc.) for Instagram carousel posts.

Time Tools: Stopwatch, Timer & World Clock

New
  • Online Stopwatch — Millisecond-precision stopwatch with lap tracking.
  • Countdown Timer — Set custom countdown timers with optional alarm sounds.
  • World Clock — View the current time across every timezone. Search and pin your favorite cities.

Text Tools & Audio Converters

New
  • Character Counter — Count characters, words, sentences, and paragraphs in real-time as you type.
  • Text Extractor — Extract text content from PDF, DOCX, XLSX, and 12+ file formats.
  • MP3 to WAV and WAV to MP3 — Convert between MP3 and WAV audio formats with adjustable bitrate.

Video Tools & Image Format Converters

New