1<!DOCTYPE html><html lang="en" data-theme="dark"><head> 2 <meta charset="UTF-8"> 3 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 4 <meta name="theme-color" content="#2F6DB0"> 5 <link rel="stylesheet" href="/loading.css"> 6 7 <link rel="preconnect" href="https://fonts.googleapis.com"> 8 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""> 9 <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet"> 10 11 <!-- Primary --> 12 <title>Free API Tester & HTTP Client for VS Code | Kernel</title> 13 <meta name="description" content="Send HTTP requests and test APIs inside VS Code with Kernel API Tester. Save request collections, use environment variables, and import Postman collections."> 14 15 <meta name="author" content="Kernel DevTools"> 16 <meta name="robots" content="index, follow"> 17 <link rel="canonical" href="https://kerneltools.dev/vscode"> 18 19 <!-- Open Graph --> 20 <meta property="og:type" content="website"> 21 <meta property="og:site_name" content="Kernel DevTools"> 22 <meta property="og:locale" content="en_US"> 23 <meta property="og:url" content="https://kerneltools.dev/vscode"> 24 <meta property="og:title" content="Free API Tester & HTTP Client for VS Code | Kernel"> 25 <meta property="og:description" content="Send HTTP requests and test APIs inside VS Code with Kernel API Tester. Save request collections, use environment variables, and import Postman collections."> 26 <meta property="og:image" content="https://kerneltools.dev/og-image.png"> 27 <meta property="og:image:width" content="1200"> 28 <meta property="og:image:height" content="630"> 29 <meta property="og:image:alt" content="Kernel DevTools â browser extension screenshot"> 30 31 <!-- Twitter / X --> 32 <meta name="twitter:card" content="summary_large_image"> 33 <meta name="twitter:title" content="Free API Tester & HTTP Client for VS Code | Kernel"> 34 <meta name="twitter:description" content="Send HTTP requests and test APIs inside VS Code with Kernel API Tester. Save request collections, use environment variables, and import Postman collections."> 35 <meta name="twitter:image" content="https://kerneltools.dev/og-image.png"> 36 37 <!-- JSON-LD structured data --> 38
38<script type="application/ld+json"> 39 { 40 "@context": "https://schema.org", 41 "@type": "SoftwareApplication", 42 "name": "Kernel DevTools", 43 "url": "https://kerneltools.dev", 44 "applicationCategory": "BrowserApplication", 45 "applicationSubCategory": "DeveloperTool", 46 "operatingSystem": "Chrome, Edge, Firefox, Safari", 47 "description": "A free browser extension with 30+ developer tools: Console, Network Inspector, DOM Tree, Storage Editor, Mock API Interceptor, Certificate Inspector, WebSocket monitor, DNS Leak Checker, Tracker Map, Performance Timeline, Accessibility Auditor, and more.", 48 "softwareVersion": "1.226.0", 49 "offers": { 50 "@type": "Offer", 51 "price": "0", 52 "priceCurrency": "USD" 53 }, 54 "author": { 55 "@type": "Organization", 56 "name": "Kernel DevTools", 57 "url": "https://kerneltools.dev" 58 } 59 } 60 </script>
60 61 62 <!-- Google AdSense --> 63
63<script> 64 // Built from the same catalog as the routes, plus any other page 65 // handling sensitive local data (e.g. /itr). Sensitive local tools 66 // never share a document with third-party advertising scripts. 67 // Entries ending in '/*' are prefixes; same rule as src/data/noAdRoutes.js. 68 window.__kernelAdvertisingPage = !["/base64-tools","/itr","/itr-upload","/pdf-edit-checker","/case-converter","/split/*","/rent-receipt-generator","/text-to-base64","/base64-to-text","/hex-to-base64","/base64-to-hex","/ascii-to-base64","/base64-to-ascii","/base64-url-encode","/base64-url-decode","/html-to-base64","/base64-to-html","/css-to-base64","/base64-to-css","/basic-auth-generator","/basic-auth-decoder","/base64-validator","/base64-detector","/normalize-base64","/repair-base64","/gzip-decompress","/uuencode-decoder","/character-encoding-detection","/data-url-to-image","/file-to-base64","/base64-to-file","/image-to-base64","/base64-to-image","/pdf-to-base64","/base64-to-pdf","/audio-to-base64","/base64-to-audio","/video-to-base64","/base64-to-video","/bmp-to-base64","/base64-to-bmp","/gif-to-base64","/base64-to-gif","/ico-to-base64","/base64-to-ico","/jpg-to-base64","/base64-to-jpg","/png-to-base64","/base64-to-png","/svg-to-base64","/base64-to-svg","/webp-to-base64","/base64-to-webp","/flac-to-base64","/base64-to-flac","/mp3-to-base64","/base64-to-mp3","/ogg-to-base64","/base64-to-ogg","/wav-to-base64","/base64-to-wav","/wma-to-base64","/base64-to-wma","/css-data-uri","/url-to-base64","/http-request-online"].some(function (route) { 69 var path = location.pathname.replace(/\/$/, '') || '/'; 70 return route.slice(-2) === '/*' ? path === route.slice(0, -2) || path.indexOf(route.slice(0, -1)) === 0 : route === path; 71 }); 72 if (window.__kernelAdvertisingPage) { 73 const advertising = document.createElement('script'); 74 advertising.async = true; 75 advertising.crossOrigin = 'anonymous'; 76 advertising.dataset.kernelAd = 'true'; 77 advertising.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2111835929023504'; 78 document.head.appendChild(advertising); 79 } 80 </script>
80 81 82 <link rel="icon" type="image/svg+xml" href="/favicon.svg"> 83 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png"> 84 <link rel="apple-touch-icon" href="/apple-touch-icon.png"> 85
85<script type="module" crossorigin="" src="/assets/index-j7I9Tmll.js"></script>
85 86 <link rel="stylesheet" crossorigin="" href="/assets/index-BvQF6vuL.css"> 87
87<script id="page-structured-data" type="application/ld+json">[{"@context":"https://schema.org","@type":"SoftwareApplication","name":"Kernel API Tester","url":"https://kerneltools.dev/vscode","applicationCategory":"DeveloperApplication","operatingSystem":"VS Code","description":"A free HTTP client for VS Code with saved collections, environment variables, and Postman v2.1 import.","downloadUrl":"https://marketplace.visualstudio.com/items?itemName=kernelToolsDev.kernel-api-tester","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"author":{"@type":"Organization","name":"Kernel DevTools","url":"https://kerneltools.dev"}},{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Is this the same as the browser extension?","acceptedAnswer":{"@type":"Answer","text":"No â it's a separate, standalone VS Code extension with its own install, its own settings, and its own codebase. It ports over just the API Tester tool from Kernel DevTools (the browser extension), since that's the one tool that doesn't need a live browser tab to work."}},{"@type":"Question","name":"Why isn't Console/Network/DOM available in VS Code too?","acceptedA
87nswer":{"@type":"Answer","text":"Those tools all inspect a live webpage â reading its console output, intercepting its network requests, walking its DOM. VS Code has no concept of \"a webpage you're currently viewing,\" so there's nothing for those tools to attach to. API Tester is different: it just sends HTTP requests you construct yourself, which works the same anywhere."}},{"@type":"Question","name":"Can I hit localhost URLs?","acceptedAnswer":{"@type":"Answer","text":"Yes â unlike the browser extension's API Tester (which blocks requests to localhost and private IP ranges as a security measure against malicious webpages abusing the extension's permissions), the VS Code version has no such restriction. Testing your own local dev server is one of the main reasons to use this from an editor."}},{"@type":"Question","name":"Where is my data stored?","acceptedAnswer":{"@type":"Answer","text":"In VS Code's own extension storage (globalState) on your machine. Nothing is sent to any server â there's no account, no sync, no telemetry."}},{"@type":"Question","name":"Is it on the VS Code Marketplace yet?","acceptedA
87nswer":{"@type":"Answer","text":"Yes â search \"Kernel API Tester\" in the Extensions panel, or install it directly from the Marketplace (link in the Installing section below)."}},{"@type":"Question","name":"Can I import my Postman collections?","acceptedAnswer":{"@type":"Answer","text":"Yes â paste a Postman Collection v2.1 JSON export into the Import dialog in the Collections view and it'll be converted automatically."}}]}]</script>
87</head> 88 <body> 89 <div id="startup-loader" class="site-loader" role="status" aria-live="polite" aria-label="Loading Kernel DevTools" hidden=""> 90 <img src="/loading-icon.svg" width="120" height="120" alt=""> 91 </div> 92
92<script> 93 // Hidden without JavaScript; fail open if the application cannot start. 94 const startupLoader = document.getElementById('startup-loader'); 95 startupLoader.hidden = false; 96 window.setTimeout(() => { startupLoader.hidden = true; }, 12000); 97 </script>
97 98 <div id="root"><nav class="nav"><a class="nav-logo" href="/"><svg width="24" height="24" viewBox="0 0 28 28" fill="none"><rect width="28" height="28" rx="6" style="fill: var(--accent);"></rect><text x="14" y="20" text-anchor="middle" fill="white" font-size="15" font-weight="800" font-family="system-ui">K</text></svg>Kernel Extension</a><div class="nav-links"><div class="nav-menu"><button class="nav-menu-trigger" aria-expanded="false" aria-controls="nav-menu-products">Products<span class="nav-menu-chevron" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="m4.5 6.5 3.5 3.5 3.5-3.5"></path></svg></span></button></div><div class="nav-menu"><button class="nav-menu-trigger" aria-expanded="false" aria-controls="nav-menu-tools">Tools<span class="nav-menu-chevron" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="m4.5 6.5 3.5 3.5 3.5-3.5"></path></svg></span></button></div><div class="nav-menu"><button class="nav-menu-trigger" aria-expanded="false" aria-controls="nav-menu-support">Support<span class="nav-menu-chevron" aria-hidden="true"><svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="m4.5 6.5 3.5 3.5 3.5-3.5"></path></svg></span></button></div></div><div class="nav-action"><a class="btn btn-ghost" href="/#install" style="padding: 7px 16px;">Get Extension</a></div><button class="nav-hamburger" aria-label="Open menu" aria-expanded="false"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="2" y1="5" x2="18" y2="5"></line><line x1="2" y1="10" x2="18" y2="10"></line><line x1="2" y1="15" x2="18" y2="15"></line></svg></button></nav><main><div class="route-panel inner-page inner-editorial route-panel--with-rails" data-page="/vscode" data-design="code"><svg class="page-sketch is-visible route-sketch" viewBox="0 0 360 320" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M35 65h290v190H35Z M35 95h290 M50 80h5m12 0h5m12 0h5" pathLength="1" style="--stroke-delay: 0ms;"></path><path d="M110 130 80 160l30 30 M245 130l30 30-30 30 M200 120l-35 80" pathLength="1" style="--stroke-delay: 140ms;"></path><path d="M60 230h75m20 0h35m20 0h60" pathLength="1" style="--stroke-delay: 280ms;"></path></svg><div class="page-hero section-arrived"><div class="page-hero-inner"><div class="section-eyebrow">VS Code Extension</div><h1>Kernel API Tester</h1><p>A free HTTP client for VS Code â collections, environment variables, and Postman import, without leaving your editor. It's the API Tester tool from Kernel DevTools (our browser extension), ported to run as its own standalone thing.</p><a href="https://marketplace.visualstudio.com/items?itemName=kernelToolsDev.kernel-api-tester" target="_blank" rel="noreferrer" class="btn btn-primary" style="margin-top: 10px;">Install from VS Code Marketplace</a></div></div><div class="prose"><h2>What it is</h2><p>Kernel DevTools is a browser extension with 30+ tools that plug into your browser's built-in DevTools panel â Console, Network Inspector, DOM Tree, Mock API, and so on. Most of those tools only make sense inside a browser, because they work by inspecting a live webpage: reading its console output, intercepting its network traffic, walking its DOM tree. There's no browser tab to inspect inside a code editor, so none of that can come along.</p><p>The API Tester is different. It's just an HTTP client â you type a URL, pick a method, set headers and a body, and it sends the request and shows you the response. That doesn't depend on a browser at all, so it's ported here as a standalone VS Code extension: a sidebar panel with the same request/response UI, collections, and environment variables as the browser version.</p><h2>Features</h2><section class="feature-showcase" aria-label="API Tester features"><div class="feature-showcase-menu"><button type="button" aria-pressed="true"><span>01</span>Saved collections</button><button type="button" aria-pressed="false"><span>02</span>Environment variables</button><button type="button" aria-pressed="false"><span>03</span>Postman v2.1 import</button><button type="button" aria-pressed="false"><span>04</span>Export to file</button><button type="button" aria-pressed="false"><span>05</span>Save example responses</button><button type="button" aria-pressed="false"><span>06</span>Full method support</button></div><div class="feature-showcase-preview"><svg class="page-sketch " viewBox="0 0 360 320" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
98<path d="M35 65h290v190H35Z M35 95h290 M50 80h5m12 0h5m12 0h5" pathLength="1" style="--stroke-delay: 0ms;"></path><path d="M110 130 80 160l30 30 M245 130l30 30-30 30 M200 120l-35 80" pathLength="1" style="--stroke-delay: 140ms;"></path><path d="M60 230h75m20 0h35m20 0h60" pathLength="1" style="--stroke-delay: 280ms;"></path></svg><span class="explorer-kicker">Feature guide</span><h3>Saved collections</h3><p>Group requests into named collections, exactly like the browser extension's API Tester â reload any saved request with one click.</p></div></section><h2>How it differs from the browser extension</h2><p>Most of the request/response logic is identical â same UI, same data model, collections and environment variables round-trip between the two if you export/import. Two deliberate differences:</p><ul><li><strong>No SSRF/private-IP blocking.</strong> The browser extension's API Tester blocks requests to <code>localhost</code> and private IP ranges, because a malicious webpage could otherwise abuse the extension's elevated permissions to probe your internal network. That threat doesn't exist in an editor â every request is one you typed yourself â and testing a local dev server is a core use case here, so that restriction is removed.</li><li><strong>Storage.</strong> The browser version uses <code>chrome.storage.local</code>; this one uses VS Code's own <code>globalState</code> API. Collections don't sync between the two automatically, but the export/import JSON format is compatible.</li></ul><div class="note"><strong>Note:</strong> this is a genuinely separate extension with its own install and its own settings â installing the browser extension doesn't give you this, and vice versa.</div><h2>Installing</h2><p>It's live on the VS Code Marketplace â <a href="https://marketplace.visualstudio.com/items?itemName=kernelToolsDev.kernel-api-tester" target="_blank" rel="noreferrer">install it directly</a>, or from inside VS Code: open the Extensions panel (<code>Ctrl+Shift+X</code>), search "Kernel API Tester", and click Install.</p><h2>How it compares</h2><table><thead><tr><th>Tool</th><th>Strengths</th><th>Trade-offs</th></tr></thead><tbody><tr class="is-own"><td><strong>Kernel API Tester</strong></td><td>Free, no account, collections + env vars + Postman import, VS Code sidebar panel</td><td>No GraphQL-specific UI, no gRPC support (yet)</td></tr><tr><td><strong>Thunder Client</strong></td><td>Free tier + paid Pro, similar collection/env model, editor-tab based</td><td>Sync and some features are paid; closed source</td></tr><tr><td><strong>Postman (VS Code extension)</strong></td><td>Full Postman feature set, cloud sync, team workspaces</td><td>Requires a Postman account; heavier, more setup</td></tr><tr><td><strong>REST Client (.http files)</strong></td><td>Plain text files, git-friendly, no UI to learn</td><td>No visual collections browser, no built-in env-variable UI</td></tr></tbody></table><h2>Frequently asked questions</h2><div style="margin-top: 8px;"><div class="faq-item"><button class="faq-q">Is this the same as the browser extension?<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" style="flex-shrink: 0; transform: none; transition: transform 0.2s;"><polyline points="6 9 12 15 18 9"></polyline></svg></button></div><div class="faq-item"><button class="faq-q">Why isn't Console/Network/DOM available in VS Code too?<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" style="flex-shrink: 0; transform: none; transition: transform 0.2s;"><polyline points="6 9 12 15 18 9"></polyline></svg></button></div><div class="faq-item"><button class="faq-q">Can I hit localhost URLs?<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" style="flex-shrink: 0; transform: none; transition: transform 0.2s;"><polyline points="6 9 12 15 18 9"></polyline></svg></button></div><div class="faq-item"><button class="faq-q">Where is my data stored?<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" style="flex-shrink: 0; transform: none; transition: transform 0.2s;"><polyline points="6 9 12 15 18 9"></polyline></svg></button></div><div class="faq-item"><button class="faq-q">Is it on the VS Code Marketplace yet?<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" style="flex-shrink: 0; transform: none; transition: transform 0.2s;"><polyline points="6 9 12 15 18 9"></polyline></svg></button></div><div class="faq-item"><button class="faq-q">Can I import my Postman collections?<svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" style="flex-shrink: 0; transform: none; transition: transform 0.2s;"><polyline points="6 9 12 15 18 9"></polyline></svg></button></div></div><h2>Feedback & support</h2><p>Found a bug or have a feature request? <a href="/report-issue">Report an issue</a>, or email <a href="/cdn-cgi/l/email-protection#3242405b4453514b725957405c575e465d5d5e411c565744"><span class="__cf_email__" data-cfemail="39494b504f585a4079525c4b575c554d5656554a175d5c4f">[email protected]</span></a> â the same address the browser extension uses for support.</p></div></div></main><footer class="footer"><div class="footer-logo">Kernel Extension</div><div class="footer-groups"><section class="footer-group"><h2>Products</h2><a class="" href="/">Browser Extension</a><a class="" href="/mobile">Mobile DevTools</a><a class="" href="/vscode">VS Code API Tester</a><a class="" href="/wordpress-plugin">WordPress Plugins</a><a class="" href="/split">Kernel Split</a></section><section class="footer-group"><h2>Tools</h2><a class="" href="/pdf-editor">PDF Editor</a><a class="" href="/crypto">Kernel Crypto</a><a class="footer-link-badged" href="/ipo">Kernel IPO<span class="footer-badge">6</span></a><a class="" href="/games">Games</a></section><section class="footer-group"><h2>Support</h2><a class="" href="/help">Help & Support</a><a class="" href="/report-issue">Report an Issue</a><a class="" href="/advertise">Advertise</a><a class="" href="/privacy">Privacy Policy</a></section></div><div class="footer-meta"><div class="footer-copy">© 2026 Kernel Extension · 30+ DevTools, zero tracking</div><button type="button" class="theme-toggle footer-theme-toggle" aria-label="Switch to light theme" aria-pressed="false" title="Switch to light theme"><svg aria-hidden="true" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9"><path d="M20.3 15.7A8.8 8.8 0 0 1 8.3 3.7 8.8 8.8 0 1 0 20.3 15.7Z"></path></svg></button></div></footer><button class="enquiry-fab" aria-expanded="false" aria-label="Open enquiry form"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 5h16v10H2z"></path><path d="M2 5l8 6 8-6"></path></svg><span>Enquire</span></button></div>
vendor: 113 bytes, lines 98-101
98 99 100 101<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
101<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"6f8de0c312fb4ccca8cef5afb83fe833","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 101
101
102<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4401148ed1ddadf',t:'MTc5MDkwNTk0NA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
102</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.