<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kris Kohlstedt</title>
    <description>The latest articles on DEV Community by Kris Kohlstedt (@kris_kohlstedt_7116c48b36).</description>
    <link>https://dev.to/kris_kohlstedt_7116c48b36</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177744%2Ff58ff54b-b081-4099-bd19-e95ac4f06f1a.jpg</url>
      <title>DEV Community: Kris Kohlstedt</title>
      <link>https://dev.to/kris_kohlstedt_7116c48b36</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kris_kohlstedt_7116c48b36"/>
    <language>en</language>
    <item>
      <title>Debugging JSON and JWTs without uploading your inputs: Payload Haven</title>
      <dc:creator>Kris Kohlstedt</dc:creator>
      <pubDate>Sun, 11 Oct 2026 19:56:55 +0000</pubDate>
      <link>https://dev.to/kris_kohlstedt_7116c48b36/debugging-json-and-jwts-without-uploading-your-inputs-payload-haven-29ao</link>
      <guid>https://dev.to/kris_kohlstedt_7116c48b36/debugging-json-and-jwts-without-uploading-your-inputs-payload-haven-29ao</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F37g05ryps2yiousf2ne6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F37g05ryps2yiousf2ne6.gif" alt="22-second walkthrough of comparing two fictional JSON API responses" width="760" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://payloadhaven.com/?utm_campaign=dev_launch" rel="noopener noreferrer"&gt;Payload Haven&lt;/a&gt;, a free collection of developer utilities that process tool inputs in your browser. No account or upload is required to use the tools.&lt;/p&gt;

&lt;p&gt;Here are three workflows you can try with sample data.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Compare JSON values instead of formatting
&lt;/h2&gt;

&lt;p&gt;Suppose an API changes from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"pending"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Ada"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="nl"&gt;"tags"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="s2"&gt;"api"&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"tags"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="s2"&gt;"api"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s2"&gt;"private"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="nl"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Ada"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"complete"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://payloadhaven.com/json-diff/?utm_campaign=dev_launch" rel="noopener noreferrer"&gt;JSON comparison tool&lt;/a&gt; ignores object key order and reports changed paths. In this example, &lt;code&gt;/status&lt;/code&gt; changes and &lt;code&gt;/tags/1&lt;/code&gt; is added. Arrays are compared by position, so reordering them can produce several changes. Paths use JSON Pointer escaping to distinguish keys that contain slashes.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Inspect a JWT without confusing decoding with verification
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://payloadhaven.com/jwt-decoder/?utm_campaign=dev_launch" rel="noopener noreferrer"&gt;JWT decoder&lt;/a&gt; displays the header, payload, and timestamp claims. Decoding does &lt;strong&gt;not&lt;/strong&gt; verify the signature or establish that the claims are trustworthy. Your application still needs to verify the signature and validate the issuer, audience, expiry, and other requirements for its use case. The sample token is deliberately not a credential.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Encode Unicode text correctly
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://payloadhaven.com/base64-encoder-decoder/?utm_campaign=dev_launch" rel="noopener noreferrer"&gt;Base64 tool&lt;/a&gt; converts text to UTF-8 bytes before encoding, so inputs such as &lt;code&gt;café 👋&lt;/code&gt; round-trip correctly. It also supports URL-safe Base64. Base64 is encoding, not encryption. For individual query parameter values, use the separate URL encoder instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  What else is included?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;JSON formatting, validation, minification, and syntax error locations&lt;/li&gt;
&lt;li&gt;URL encoding and decoding&lt;/li&gt;
&lt;li&gt;Unix timestamp conversion with explicit time zones&lt;/li&gt;
&lt;li&gt;Random v4 UUID generation, including batches&lt;/li&gt;
&lt;li&gt;JSON string escaping and unescaping&lt;/li&gt;
&lt;li&gt;Result downloads and settings-only sharing links&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tool inputs and results are not uploaded for processing. The site has a separate analytics choice described on its &lt;a href="https://payloadhaven.com/privacy/" rel="noopener noreferrer"&gt;privacy page&lt;/a&gt;; browser-local processing does not mean that loading a website makes no network requests.&lt;/p&gt;

&lt;p&gt;One limitation: the JSON tools use JavaScript numbers, which can round very large integers or high precision decimals. Preserve the original input when exact numeric representation matters.&lt;/p&gt;

&lt;p&gt;I would appreciate specific feedback: which workflow would you bookmark, and what currently makes it awkward to use?&lt;/p&gt;

&lt;p&gt;Disclosure: I used AI assistance to build the site and draft this post.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
