<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[KeptTools]]></title><description><![CDATA[Free browser-only tools for JSON, JWT, cron, regex, Base64, and more. Nothing you paste is uploaded — it stays in your browser.]]></description><link>https://kepttools.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6acdedf030c1cb3b7081ed53/218a2b7d-4662-4670-8769-c247121325ef.png</url><title>KeptTools</title><link>https://kepttools.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 23 Oct 2026 02:06:31 GMT</lastBuildDate><atom:link href="https://kepttools.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Free Cron Expression Creator Online | KeptTools]]></title><description><![CDATA[Create cron expressions online with presets and a plain-English summary. Copy to crontab from your browser — no upload. KeptTools cron generator.]]></description><link>https://kepttools.hashnode.dev/free-cron-expression-creator-online-kepttools</link><guid isPermaLink="true">https://kepttools.hashnode.dev/free-cron-expression-creator-online-kepttools</guid><category><![CDATA[Devops]]></category><category><![CDATA[Linux]]></category><category><![CDATA[webdev]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[tools]]></category><category><![CDATA[kepttools]]></category><dc:creator><![CDATA[Ameen Usman]]></dc:creator><pubDate>Tue, 20 Oct 2026 15:53:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6acdedf030c1cb3b7081ed53/776960d0-93b4-4f78-a957-42bf46fe83e7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Free Cron Expression Creator Online | KeptTools</h1>
<p>If you’ve ever written <code>0 9 * * 1-5</code> from memory, you already know why a visual cron builder helps.</p>
<p><strong>KeptTools</strong> includes a free cron expression creator that runs fully in the browser.</p>
<h2>What you get</h2>
<ul>
<li><p>Presets for common schedules</p>
</li>
<li><p>Five-field editor (minute, hour, day, month, weekday)</p>
</li>
<li><p>Human-readable summary</p>
</li>
<li><p>One-click copy for crontab / workers</p>
</li>
</ul>
<p>Sample:</p>
<p><code>0 9 * * 1-5</code> → weekdays at 09:00</p>
<h2>Privacy</h2>
<p>No paste is sent to a server for processing.</p>
<p>Open the tool: <a href="https://kepttools.com/cron-generator">https://kepttools.com/cron-generator</a></p>
<p>More developer utilities: <a href="https://kepttools.com">https://kepttools.com</a></p>
]]></content:encoded></item><item><title><![CDATA[KeptTools: browser-only developer tools that don’t upload your paste]]></title><description><![CDATA[Free browser-only developer tools: JSON, SQL, JWT, Base64, hashes, regex, and images. Everything stays local — check DevTools Network while you work.]]></description><link>https://kepttools.hashnode.dev/kepttools-browser-only-developer-tools-that-don-t-upload-your-paste</link><guid isPermaLink="true">https://kepttools.hashnode.dev/kepttools-browser-only-developer-tools-that-don-t-upload-your-paste</guid><category><![CDATA[webdev]]></category><category><![CDATA[privacy]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Laravel]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Ameen Usman]]></dc:creator><pubDate>Mon, 19 Oct 2026 16:02:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6acdedf030c1cb3b7081ed53/f6578cdc-31bf-4e2c-839b-84216b64aeba.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>KeptTools: browser-only developer tools that don’t upload your paste</h1>
<p>I build a lot of small utilities into my day: format JSON, clean SQL, peek at a JWT, encode Base64, generate a hash, compress an image. The annoying part isn’t the task.<br />It’s trusting a random website with the paste.</p>
<h2>Why that matters</h2>
<p>Dummy data is fine anywhere. But real-ish data isn’t:</p>
<ul>
<li><p>a JWT from a staging app</p>
</li>
<li><p>a SQL snippet with customer emails</p>
</li>
<li><p>a Base64 payload that still holds sensitive text<br />If the tool uploads your input, you’ve already lost control of it.</p>
</li>
</ul>
<h2>What I built</h2>
<p><a href="https://kepttools.com"><strong>KeptTools</strong></a> is a free set of developer tools that run <strong>entirely in the browser</strong>. Nothing you paste is sent to a server for processing. On sensitive pages (JWT decoder, Base64, hash generator, password generator):</p>
<ul>
<li><p>no analytics</p>
</li>
<li><p>no ads</p>
</li>
<li><p>no third-party scripts<br />You can verify this yourself: open <strong>DevTools → Network</strong> while you work.</p>
</li>
</ul>
<h2>Tools included</h2>
<ul>
<li><p>JSON formatter &amp; converter</p>
</li>
<li><p>SQL formatter</p>
</li>
<li><p>JWT decoder</p>
</li>
<li><p>Base64 encoder / decoder</p>
</li>
<li><p>Hash generator (MD5, SHA-1, SHA-256, SHA-512)</p>
</li>
<li><p>URL &amp; HTML encoder</p>
</li>
<li><p>Regex tester</p>
</li>
<li><p>Image convert / compress / crop / background tools</p>
</li>
<li><p>and more everyday utilities<br />Try it here: <a href="https://kepttools.com">https://kepttools.com</a></p>
</li>
</ul>
<h2>What I’m looking for</h2>
<p>Honest feedback:</p>
<ol>
<li><p>Is “nothing leaves your browser” clear on first visit?</p>
</li>
<li><p>Which tool would you open every week?</p>
</li>
<li><p>What’s missing for your workflow? Thanks for reading. If you try KeptTools, please stress-test the privacy claim in Network — that’s the whole point.</p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[How to prove an online JWT tool isn’t stealing your token]]></title><description><![CDATA[Use the Network tab (and CSP checks) to verify a JWT decoder stays in your browser. Plus a free local tool you can test yourself.]]></description><link>https://kepttools.hashnode.dev/how-to-prove-an-online-jwt-tool-isn-t-stealing-your-token</link><guid isPermaLink="true">https://kepttools.hashnode.dev/how-to-prove-an-online-jwt-tool-isn-t-stealing-your-token</guid><category><![CDATA[webdev]]></category><category><![CDATA[Security]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[privacy]]></category><category><![CDATA[kepttools]]></category><dc:creator><![CDATA[Ameen Usman]]></dc:creator><pubDate>Sun, 18 Oct 2026 15:39:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6acdedf030c1cb3b7081ed53/e8474283-4233-40e9-a930-6714a85d2385.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most free JWT decoders ask you to paste a token.</p>
<p>That’s a trust problem. Tokens can include emails, roles, and session data. If the page uploads it, you just gave secrets to someone else’s server.</p>
<p>Here’s the fastest way to check any tool:</p>
<h2>Use the Network tab</h2>
<ol>
<li><p>Open DevTools (F12)</p>
</li>
<li><p>Open <strong>Network</strong></p>
</li>
<li><p>Paste a <strong>sample</strong> token</p>
</li>
<li><p>Watch for requests</p>
</li>
</ol>
<p>If decoding fires a request with your token, leave.</p>
<p>A privacy claim is marketing. An empty Network tab is evidence.</p>
<h2>Try a local decoder</h2>
<p>I built a browser-only JWT decoder here:</p>
<p><a href="https://kepttools.com/jwt-decoder">https://kepttools.com/jwt-decoder</a></p>
<p>No account. Nothing uploaded. Open Network while you decode and confirm it yourself.</p>
<p>If you try it, tell me bluntly: is the privacy story clear in 5 seconds?</p>
]]></content:encoded></item><item><title><![CDATA[That API Timestamp Looks Like Nonsense — Here’s How I Read It in the Browser]]></title><description><![CDATA[Convert Unix timestamps to UTC and local time in your browser. No upload. Free tool for API work and testing.]]></description><link>https://kepttools.hashnode.dev/that-api-timestamp-looks-like-nonsense-here-s-how-i-read-it-in-the-browser</link><guid isPermaLink="true">https://kepttools.hashnode.dev/that-api-timestamp-looks-like-nonsense-here-s-how-i-read-it-in-the-browser</guid><category><![CDATA[kepttools]]></category><category><![CDATA[webdev]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[api]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Ameen Usman]]></dc:creator><pubDate>Fri, 16 Oct 2026 06:26:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6acdedf030c1cb3b7081ed53/55ea8018-7d00-4650-b78c-919ce37e92bf.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you work with APIs long enough, you eventually get a field like this:<br />1729000000  </p>
<p>Is that seconds? Milliseconds? Yesterday? Next week?</p>
<p>I got tired of guessing — and tired of pasting values into random websites.</p>
<p>So I added a Unix timestamp converter to <strong>KeptTools</strong>. It runs in the browser. Nothing is uploaded.</p>
<p>👉 <a href="https://kepttools.com/timestamp">https://kepttools.com/timestamp</a></p>
<h2>What it does</h2>
<ol>
<li><p>Paste a Unix timestamp</p>
</li>
<li><p>See <strong>UTC</strong> and <strong>local</strong> time</p>
</li>
<li><p>Copy the ISO value</p>
</li>
<li><p>Or tap <strong>Use now</strong> for the current epoch</p>
</li>
</ol>
<p>Example:</p>
<ul>
<li><p>Input: <code>1729000000</code></p>
</li>
<li><p>UTC: <code>2024-10-15T13:46:40.000Z</code></p>
</li>
</ul>
<p>Useful when you’re reading <code>created_at</code>, writing a test, or checking an expiry field.</p>
<h2>Why browser-only matters here</h2>
<p>Timestamps themselves aren’t always sensitive.</p>
<p>But the habit is: once you start pasting API payloads into third-party sites, it’s easy to paste a token next.</p>
<p>I want the everyday tools on the same page as the privacy promise: work happens on your device.</p>
<h2>Other tools in the suite</h2>
<p>If timestamps are only one part of your day:</p>
<ul>
<li><p><a href="https://kepttools.com/json-formatter">JSON Formatter</a></p>
</li>
<li><p><a href="https://kepttools.com/jwt-decoder">JWT Decoder</a></p>
</li>
<li><p><a href="https://kepttools.com/json-converter">JSON Converter</a></p>
</li>
</ul>
<p>Full set: <a href="https://kepttools.com">https://kepttools.com</a></p>
<h2>Quick question</h2>
<p>When an API returns epoch time, do you usually:</p>
<ul>
<li><p>convert it in code,</p>
</li>
<li><p>use a browser tool, or</p>
</li>
<li><p>guess from the length?</p>
</li>
</ul>
<p>Tell me in the comments — I’m iterating based on real workflows.</p>
]]></content:encoded></item><item><title><![CDATA[I Got Tired of “Free Tools” That Upload My Files — So I Built Browser-Only Ones]]></title><description><![CDATA[Tired of free tools that upload your data? KeptTools runs JSON, JWT, and image utilities in your browser. No account. Nothing uploaded.]]></description><link>https://kepttools.hashnode.dev/i-got-tired-of-free-tools-that-upload-my-files-so-i-built-browser-only-ones</link><guid isPermaLink="true">https://kepttools.hashnode.dev/i-got-tired-of-free-tools-that-upload-my-files-so-i-built-browser-only-ones</guid><category><![CDATA[webdev]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[privacy]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[kepttools]]></category><dc:creator><![CDATA[Ameen Usman]]></dc:creator><pubDate>Thu, 15 Oct 2026 12:29:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6acdedf030c1cb3b7081ed53/6b49af7a-b86e-4ca0-a98c-18d3f188509e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most “free online tools” ask you to paste text or upload a photo.</p>
<p>What they don’t always make clear: that content often leaves your device.</p>
<p>For JSON with client data, a JWT, a draft you’re not ready to publish, or a passport-style photo — that’s a bad trade.</p>
<p>So I built <strong>KeptTools</strong>: a small set of developer and image tools that run in the browser. No account. No “upload to process.”</p>
<p>👉 <a href="https://kepttools.com">https://kepttools.com</a></p>
<h2>What “browser-only” means here</h2>
<p>When you open a tool page:</p>
<ul>
<li><p>The work happens on the page (JavaScript in your browser)</p>
</li>
<li><p>You can format, convert, crop, or decode without creating an account</p>
</li>
<li><p>Closing the tab ends the session — nothing is stored as “your file” on our servers for processing</p>
</li>
</ul>
<p>A few tools download a small model the first time (for example, portrait background replacement). That download is the model, not your photo.</p>
<h2>What’s live</h2>
<p><strong>Developer tools</strong></p>
<ul>
<li><p>JSON formatter / validator</p>
</li>
<li><p>JSON converter (CSV, Laravel, TypeScript, PHP, and more)</p>
</li>
<li><p>SQL formatter</p>
</li>
<li><p>JWT decoder</p>
</li>
<li><p>Base64, hash, URL/HTML encode</p>
</li>
<li><p>Regex tester, cron generator, UUID/slug</p>
</li>
</ul>
<p><strong>Image tools</strong></p>
<ul>
<li><p>PNG/JPG → WebP</p>
</li>
<li><p>Compress</p>
</li>
<li><p>Crop</p>
</li>
<li><p>Image → SVG</p>
</li>
<li><p>Change background (white / blue / custom / transparent)</p>
</li>
</ul>
<p><strong>Text utilities</strong></p>
<ul>
<li><p>Word counter</p>
</li>
<li><p>Case converter (camelCase, snake_case, kebab-case, and more)</p>
</li>
</ul>
<h2>Why I care about this</h2>
<p>I use these utilities every week. I don’t want a random site keeping a copy of:</p>
<ul>
<li><p>a token</p>
</li>
<li><p>a production-ish JSON blob</p>
</li>
<li><p>an ID photo</p>
</li>
</ul>
<p>Privacy shouldn’t be a premium feature for basic tools.</p>
<h2>Stack (short)</h2>
<p>Laravel + Vite + Tailwind + Alpine. Tools are client-side where it matters.</p>
<h2>What I’d love feedback on</h2>
<ol>
<li><p>Is “browser-only / no upload” a strong enough reason to switch tools?</p>
</li>
<li><p>Which tool would you open first from the homepage?</p>
</li>
<li><p>What’s missing that would make you bounce?</p>
</li>
</ol>
<p>If you try something and it feels unclear, tell me — I’m iterating from real use.</p>
<p><strong>Try it:</strong> <a href="https://kepttools.com">https://kepttools.com</a></p>
]]></content:encoded></item><item><title><![CDATA[Convert JSON to Laravel, TypeScript, PHP DTO, or CSV in your browser]]></title><description><![CDATA[Convert JSON to a Laravel array, TypeScript interface, PHP DTO, or CSV in your browser. Nothing is uploaded. Free on KeptTools.]]></description><link>https://kepttools.hashnode.dev/convert-json-to-laravel-typescript-php-dto-or-csv-in-your-browser</link><guid isPermaLink="true">https://kepttools.hashnode.dev/convert-json-to-laravel-typescript-php-dto-or-csv-in-your-browser</guid><category><![CDATA[Laravel]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[webdev]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Ameen Usman]]></dc:creator><pubDate>Tue, 13 Oct 2026 09:06:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6acdedf030c1cb3b7081ed53/c39df77f-515c-4116-b3e6-ad25b9d24457.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I kept needing the same thing during Laravel and TypeScript work:</p>
<p>paste some API JSON, get a clean Laravel array, a TypeScript interface, a PHP DTO, or CSV — without sending that payload to a random website.</p>
<p>So I built it into <a href="https://kepttools.com">KeptTools</a>.</p>
<h2>What it does</h2>
<p>The <a href="https://kepttools.com/json-converter">JSON Converter</a> turns JSON into:</p>
<ul>
<li><p>a Laravel PHP array</p>
</li>
<li><p>a TypeScript interface</p>
</li>
<li><p>a PHP DTO class</p>
</li>
<li><p>CSV</p>
</li>
</ul>
<p>Everything runs in the browser. Nothing is uploaded.</p>
<h2>Quick example</h2>
<p>Input:</p>
<pre><code class="language-json">[
  {"id": 1, "name": "Ada", "role": "engineer"},
  {"id": 2, "name": "Linus", "role": "founder"}
]
</code></pre>
]]></content:encoded></item></channel></rss>