DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
World desk6 min

Building 5 Free Tools in Vanilla HTML/JS — No Frameworks, No Build Steps

K1R4's DEV Community tutorial builds five focused browser tools as single HTML files with no framework and no build step. Here is how they work, which browser features they depend on, and what the author's claims do and do not establish.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Yes. K1R4’s DEV Community tutorial describes five small browser utilities, a Kanban board, a Pomodoro timer, a CSS gradient generator, a JSON formatter, and a regex tester, each built as a single HTML file with plain HTML, CSS, and JavaScript. There is no framework and no bundler or build command. The author’s workflow is to edit the file and reload the page. The approach suits tools with one focused job. It does not show that larger applications can do without frameworks. Everything below reports the author’s account; the examples have not been independently reproduced or tested.

The five tools at a glance

The five tools are unrelated products, not variations on one app. They differ mainly in what state they keep and which browser features they rely on, which is why the table below is the fastest way to decide which ideas to reuse.

As an Amazon Associate I earn from qualifying purchases.

Tool What it does State kept Browser features named by the author Export or sharing
Kanban board Drag-and-drop task board with color-coded tags Task state stored locally in localStorage HTML Drag and Drop API Not stated in the article
Pomodoro timer Configurable work and break sessions with an animated SVG progress ring Session history in localStorage Web Audio API for the alert tone Not stated in the article
CSS gradient generator Visual controls for linear and radial gradients, with presets Not stated in the article CSS custom properties to update the live preview Export to CSS, SCSS, or Tailwind syntax
JSON formatter Parses and pretty-prints JSON, showing an error when parsing fails Not stated in the article JSON.parse and JSON.stringify Not stated in the article
Regex tester Builds a RegExp from chosen flags, matches sample text, shows captured groups Not stated in the article RegExp construction with debounced input processing Not stated in the article

Why one file and one job works

  • Small state. A tool with one job needs one set of data and a few event handlers, so the whole program stays readable in one file.
  • No build output to manage. The file you edit is the file the browser runs, so a change is visible after a reload.
  • Optional hosting. According to the article, a single file can be opened directly in a browser or uploaded to a web server. No provider is recommended.
  • The trade-off. Without modules or a bundler, shared code has to be copied or pasted between files. Combining several tools into one larger product would soon need the structure a framework provides.

Running a tool yourself

  1. Create a folder and save the code as an .html file, for example kanban.html.
  2. Open the file in your browser by dragging it into a browser window or using the browser’s open-file command.
  3. Edit the file in any text editor, save it, and reload the tab. There is no compile step.
  4. To publish, upload the same file to a web server. Nothing needs to be generated first.
  5. Test each feature in every browser you intend to support, including the local-file and hosted versions. Browsers can treat a local file and a hosted page differently, especially for storage.

The author summarizes the workflow in one line: “Zero build step — edit the file, refresh the browser.” That is a description of how the author works, not a guarantee that every browser API behaves identically in every environment.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How the browser features behave

Drag and drop in the Kanban board

MDN’s HTML Drag and Drop documentation says data moved through the drag operation is serialized as a string or a File. It cannot carry an arbitrary JavaScript object. Store a task ID in the transfer data, for example with event.dataTransfer.setData('text/plain', task.id), and look up the full task object from your saved state when the item is dropped.

Audio in the Pomodoro timer

Browsers’ autoplay policies generally require an AudioContext to be created or resumed after a user gesture. A timer that starts sound on its own, without a click, can fail silently. Make sound opt-in, and create or resume the context inside the click handler for the Start button:

let audioCtx = null;

startButton.addEventListener('click', async () => {
  audioCtx = audioCtx ?? new AudioContext();
  if (audioCtx.state === 'suspended') {
    await audioCtx.resume();
  }
  startSession();
});

Here startSession stands in for your own function. Provide a fallback as well: if the context cannot be created, or the user has turned sound off, show a visual cue such as a color change so the session end is still noticed.

Live preview in the gradient generator

The author reports using CSS custom properties, for example --gradient-start and --gradient-end, set from the controls and read by the preview element’s CSS. This keeps the preview logic in one place. The article does not describe how the export step builds its CSS, SCSS, or Tailwind output, so verify those formats against the syntax you need.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Parsing and formatting JSON

The formatter parses input with JSON.parse, which throws a SyntaxError for invalid text. Wrap the call in a try block and show the message beside the input. Valid input can be pretty-printed with JSON.stringify(value, null, 2). The article also reports syntax highlighting and a tree view; those are described features that the article does not demonstrate in detail.

Building and running a regular expression

The regex tester constructs a RegExp from the pattern and the flags the user chooses. An invalid pattern throws an error, so catch it and display the message rather than letting the page fail. The author says input is debounced, meaning processing waits until typing pauses. When displaying matches and captured groups, insert them with textContent rather than innerHTML, so text pasted into the sample area is shown as text and not interpreted as markup.

Storage: what localStorage can and cannot promise

The Kanban board and the Pomodoro history depend on localStorage. Per MDN’s Web Storage documentation, localStorage is shared by same-origin documents, is partitioned by origin, and generally remains after the browser restarts. It is also synchronous, so large or frequent reads and writes can block the main thread. Keep stored data small.

Point What the sources establish Source
Documented quota 5 MiB per origin for localStorage and 5 MiB per origin for sessionStorage MDN Web Docs, “Storage quotas and eviction criteria” (page as accessed)
Quota exceeded Writes beyond the quota can raise a QuotaExceededError; catch it and tell the user MDN Web Docs, “Storage quotas and eviction criteria”
Actual capacity Private browsing modes, browser policy, device capacity, and eviction can reduce what an application can store MDN Web Docs, “Storage quotas and eviction criteria”
Persistence Data generally survives a browser restart, but it is browser-managed and is not a permanent guarantee MDN Web Docs, “Web Storage API” (2025)
Article’s figure The article says “~5MB,” an approximation; use the MDN figure above DEV Community article by K1R4

localStorage is not cloud sync. Data saved on one device or in one browser profile does not appear on another, and clearing site data removes it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What is author-reported and what is not verified

  • Offline operation. The article says the tools work offline and send no network requests. That is the author’s design claim. It has not been independently checked here.
  • Browser compatibility. The article does not establish support for every browser or version. Avoid assuming that any tool works in any browser; test the APIs above in the browsers you target.
  • Described features. Syntax highlighting, the JSON tree view, the export formats, and the debounce timing are features the author describes.
  • Performance. The article and the consulted sources contain no measured speed results, user counts, or development-cost comparisons.

Vanilla HTML/JS or a framework?

The article does not compare vanilla code with a framework through controlled tests, so the decision has to rest on the project itself. Judge it on these points:

Best Value
Sale
Web Design with HTML, CSS, JavaScript and jQuery Set
  • Brand: Wiley
  • Set of 2 Volumes
  • A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers
  • Scope. One tool with one job suits a single file. Several screens sharing data and routing usually do not.
  • Dependencies and build. A vanilla project has no build chain to maintain. A framework project gains tooling and components in exchange for that maintenance.
  • UI state. If many components must react to shared state, the manual wiring in plain JavaScript grows quickly.
  • Team conventions and maintenance. A team already fluent in a framework will often be more productive with it, regardless of the project’s size.

The five tools in the article fit the first point and illustrate the approach well. They are a starting pattern for focused utilities, not a general argument against frameworks.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.