nutilz

Developer Tools

Free Code and Network Tools for Developers

Published July 3, 2026 Β· 6 min read

Most developer tasks don't need a full IDE or a paid subscription β€” they need a sharp utility that does one job instantly. Formatting a messy SQL query, looking up where an IP originates, checking when a domain expires, converting a cURL command to Python: these are the gaps between the big tools where time quietly disappears.

This post covers eight free, browser-based developer utilities that handle exactly these tasks. None require an account. All process data locally or return results in seconds. The full collection is in the Developer Tools hub.

SQL Formatter

Raw SQL from query logs, ORM debug output, or copied database dumps is almost always unreadable β€” keywords in mixed case, whitespace collapsed, clauses running together on a single line. The SQL Formatter takes any SQL string and returns clean, consistently indented output with uppercase keywords and legible clause structure.

A concrete example: paste this into the formatter:

select u.id,u.name,o.total from users u inner join orders o on u.id=o.user_id where o.total>100 and u.active=1 order by o.total desc limit 20

The formatter outputs:

SELECT
  u.id,
  u.name,
  o.total
FROM users u
INNER JOIN orders o
  ON u.id = o.user_id
WHERE
  o.total > 100
  AND u.active = 1
ORDER BY o.total DESC
LIMIT 20

The readable version makes it immediately clear which columns are selected, how the join condition is structured, and what the WHERE clause is filtering. This is the version you want in a code review, in documentation, or in a bug report β€” not the one-liner that forces a reviewer to parse clause boundaries mentally.

The formatter also handles INSERT, UPDATE, CREATE TABLE, subqueries, and common table expressions (CTEs). Works across MySQL, PostgreSQL, SQLite, and SQL Server syntax without needing to specify a dialect.

JSON to TypeScript Converter

Working with external APIs means receiving JSON responses and then writing TypeScript interfaces to match β€” especially for nested objects, optional fields, and arrays. The JSON to TypeScript Converter eliminates this step by generating interfaces or Zod schemas directly from any JSON object.

Paste an API response like this:

{
  "id": 42,
  "username": "alice",
  "email": "alice@example.com",
  "roles": ["admin", "editor"],
  "profile": { "bio": "Developer", "verified": true }
}

And the converter outputs a ready-to-use TypeScript interface:

interface Profile {
  bio: string
  verified: boolean
}

interface Root {
  id: number
  username: string
  email: string
  roles: string[]
  profile: Profile
}

For API responses with dozens of fields or deeply nested structures, the time saved is significant. The converter handles nested objects by generating named sub-interfaces, infers array element types correctly, and supports Zod schema output for projects that use runtime validation alongside TypeScript types.

cURL to Code Converter

Browser developer tools, API documentation, and command-line examples almost always express HTTP requests as cURL commands. Translating one into application code β€” Python's requests library, JavaScript's fetch, Go's net/http β€” is mechanical but error-prone, particularly for requests with headers, auth tokens, and JSON bodies.

The cURL to Code Converter parses a cURL command and outputs equivalent code in Python, JavaScript, Go, PHP, or Ruby. Paste a command like:

curl -X POST https://api.example.com/v1/users \
  -H "Authorization: Bearer eyJ..." \
  -H "Content-Type: application/json" \
  -d '{"name":"Alice","email":"alice@example.com"}'

The converter produces the Python equivalent using the requests library with the correct headers dictionary, JSON body, and Bearer token in place β€” ready to drop into your codebase. It handles -F multipart form fields, --data-urlencode, cookie flags, and follow-redirect options. The most common workflow: copy a cURL command from browser DevTools Network tab, paste it into the converter, select your target language, and get correct code in three seconds.

IP Lookup

The IP Lookup tool takes any IPv4 or IPv6 address and returns its geolocation data β€” country, region, city, postal code β€” plus the ISP, organization, ASN (Autonomous System Number), timezone, and whether the address is a known bogon (private or reserved range that should never appear in public traffic).

Practical uses during development and debugging:

  • Verify CDN edge nodes. Look up the IP your DNS resolves to β€” confirm your CDN is serving from the expected region and not routing traffic through an unexpected point of presence.
  • Investigate traffic anomalies. When server logs show unexpected activity from an unfamiliar IP block, a quick lookup identifies the originating ISP and country without leaving the browser.
  • Test geolocation logic. Verify that your application's IP-based routing sends requests from specific regions to the correct backend endpoints before deploying geo-routing rules.
  • Check VPN and proxy exit nodes. Confirm which IP and country a VPN connection exits from, or verify that a production server's outbound IP matches what's registered with third-party API providers.

Domain Expiry Checker

Domain registrations expire silently. Reminder emails from registrars often go to inboxes that aren't monitored, and an expired domain can take a critical site offline β€” or let a bad actor register it and intercept traffic intended for you.

The Domain Expiry Checker queries the RDAP (Registration Data Access Protocol) database and returns a domain's registration date, expiry date, last-updated date, registrar, current name servers, and status flags. No sign-in, no API key required.

Enter a domain like example.com and you get the exact expiry date and how many days remain until renewal. The status field shows whether the domain is active, pending-delete, or in redemption period β€” the last two indicating it has already expired and is either queued for deletion or in the grace window where the original owner can still recover it.

The checker also returns the registrar name, which is useful when you're inheriting a codebase or taking over infrastructure and need to know where domains are actually managed versus where DNS is configured.

Robots.txt Generator

A robots.txt file tells search engine crawlers which paths they may and may not visit. Writing one by hand for anything beyond the simplest cases is error-prone β€” a misplaced slash, a missing user agent directive, or a disallow rule that's too broad can accidentally block Googlebot from indexing your entire site.

The Robots.txt Generator provides a visual editor where you configure user agents (Googlebot, all bots, or specific crawlers) and specify allowed and disallowed paths per agent. Common configurations are available as starting points β€” blocking everything for a staging environment, allowing only specific crawlers on select paths, or adding your sitemap URL. The output is a correctly formatted file you can drop directly into your project's public/ directory.

One important nuance the generator handles: the order of Allow and Disallow directives matters. When both match a path, the more specific rule wins β€” so Allow: /api/public followed by Disallow: /api correctly permits /api/public while blocking the rest of /api/.

.gitignore Generator

Starting a project without a .gitignore before the first commit is a mistake that leads to committing node_modules, .env files, IDE configuration directories, build artifacts, or system files like .DS_Store to version control. Cleaning these up after the fact requires rewriting git history.

The .gitignore Generator provides ready-made templates for every major stack: Node.js, Python, Go, Java, Ruby, Rust, PHP, and more. Each template covers the standard exclusion patterns for that ecosystem β€” dependency directories (node_modules/, __pycache__/, vendor/), compiled output, environment files, editor metadata (.vscode/, .idea/), and OS artifacts.

Select a template, review the patterns, copy the output, and paste it into a new .gitignore before your first commit. For projects that combine multiple stacks β€” a monorepo with a Python backend and Node.js frontend, for example β€” you can merge templates manually, since both share similar patterns for environment files and OS artifacts.

AI Token Counter

Large language model APIs bill by token, and context windows have hard limits. A prompt that fits inside one model's context window may exceed another's, or may cost more than expected when batched across thousands of API calls.

The AI Token Counter estimates token counts for any text input across multiple model families using each model's tokenization approach. Paste a system prompt, a document, or a prompt template and see the token count per model in one view. This is most useful when:

  • Designing prompts that must fit a specific context window. Count before you send β€” identify which sections of a long prompt are consuming the most tokens and trim accordingly.
  • Estimating API cost before running batch jobs. A 500-token prompt processed across 10,000 records has a predictable cost per model β€” the counter gives you the number to plug into each provider's pricing calculator.
  • Choosing the most efficient model for a task. Token counts differ between models because tokenizers differ. A document that costs 800 tokens on one model may cost 950 on another, affecting both price and how much context fits per call.
  • Debugging "context length exceeded" errors. Paste the full prompt to see exactly how many tokens it contains, then trace which component β€” system message, conversation history, or injected document β€” is responsible for pushing past the limit.

Frequently Asked Questions

Do these tools store or log the data I enter?

No. The SQL formatter, JSON-to-TypeScript converter, cURL-to-code converter, robots.txt generator, .gitignore generator, and AI token counter all run entirely in your browser β€” nothing you paste leaves your machine. The IP lookup and domain expiry checker query public RDAP and geolocation APIs but do not log your queries on Nutilz servers. Close the tab and all entered data is gone.

How accurate is the IP geolocation data?

Country-level accuracy is typically above 95% for most IP blocks. City-level accuracy is lower β€” often 50–80% β€” and postal code accuracy lower still. For debugging CDN edge nodes or verifying a VPN exit country, the country and ISP fields are reliable. Street-level precision is not a realistic expectation from IP geolocation regardless of the tool used.

What SQL dialects does the formatter support?

The formatter handles standard SQL across MySQL, PostgreSQL, SQLite, and SQL Server for common query types: SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, and JOIN syntax. Dialect-specific extensions β€” PostgreSQL's dollar-quoted strings, SQL Server's square bracket identifiers β€” pass through as-is rather than being restructured. For purely formatting purposes, dialect differences rarely matter.

Which AI models does the token counter support?

The counter covers the major model families: OpenAI (GPT-3.5, GPT-4, GPT-4o), Anthropic Claude models, and common open-source tokenizer families. Counts are estimates based on each model's published tokenizer β€” accurate for cost estimation and context planning, but not guaranteed to match exact billing figures to the token.

Can the cURL converter handle authentication headers correctly?

Yes β€” it handles Bearer token headers, HTTP Basic auth (-u username:password), custom API key headers, and cookie-based auth (-b flag). Multi-step OAuth token exchange flows are out of scope, but once you have a token and the cURL command that uses it, the converter translates the full request correctly in all supported languages.

All eight tools are in the Developer Tools hub alongside the full collection of formatting, encoding, and parsing utilities covered in the earlier developer tools guide. The complete set of 100+ free browser-based tools across finance, text, design, wellness, and image editing is at the Nutilz homepage.