Developer tools

Small jobs you would otherwise open a website or a terminal for: generate a UUID, encode or hash a string, read a JWT, pretty-print JSON, convert a timestamp, check a colour, free a port, see how busy the Mac is. Everything here runs offline.

Lightspot guide
  1. Overview
  2. Install, update and uninstall
  3. Searching and the app grid
  4. Calculator and conversions
  5. Developer tools
  6. Terminal history and projects
  7. Custom commands, web search and snippets
  8. Browser, clipboard and system
  9. Turning off Apple Spotlight
  10. Menu bar and settings
  11. Privacy
  12. How Lightspot works

Encoders and generators

Type a keyword, a space and your text. The answer appears in the Developer Tools section, usually as the Top Hit, and ↵ copies it and closes Lightspot. These results depend only on what you typed, so Lightspot does not keep them in its search history.

TypeYou get↵ copies
uuid, guidA new random UUID (version 4, lowercase)The UUID
b64 hello, base64 helloBase64 of the textThe Base64 string
b64d aGVsbG8=, b64 decode …, base64 decode …The decoded text (padded Base64 that decodes to text)The text
urlencode a b&cPercent-encoded textThe encoded text
urldecode a%20bDecoded textThe decoded text
hash hello worldThree rows: SHA-256, MD5 and SHA-1The digest of the row
hash sha256 …, hash md5 …, hash sha1 …One row for that algorithmThe digest
jwt eyJ…, eyJ…The decoded payload, and the header on a second row (a bare token works too)The row as indented JSON
json {…}, {…}, […]Formatted JSON (bare JSON works too)The indented JSON
epoch, nowThe current Unix timeSeconds since 1970
epoch 1760000000That moment in your time zone and in UTCThe local date and time
epoch 2024-01-15 10:30The Unix time of that dateThe seconds
#3498db, #fff, #RRGGBBAA, rgb(52, 152, 219)Three rows: hex, rgb() and hsl()The value of the row
Typing uuid shows the New UUID snippet as Top Hit and a fresh UUID v4 under Developer Tools
uuid matches both the built-in generator and the New UUID text snippet; each gives a fresh value.
b64 hello world shows aGVsbG8gd29ybGQ=

Hashes

hash followed by text gives its SHA-256, MD5 and SHA-1, in that order. Put the algorithm first (sha256, md5 or sha1) to get only that one. Digests are lowercase hex.

hash hello world shows the SHA-256, MD5 and SHA-1 of “hello world”
hash sha256 hello world shows only the SHA-256 digest

JWT and JSON

Paste a token after jwt, or paste a token that starts with ey on its own. Lightspot decodes the payload on the first row and the header on the second, each shown on one line; ↵ copies the selected one as indented JSON with sorted keys. The signature is not checked.

A JWT decoded into its payload (iat, name, sub) and its header (alg, typ)

JSON works the same way: json followed by JSON, or JSON starting with { or [. Invalid JSON gives no result, which makes this a quick validity check.

A JSON object formatted with indentation and sorted keys

Timestamps

epoch or now shows the current Unix time in seconds, with milliseconds and the local ISO 8601 time underneath. epoch followed by a number turns a timestamp into a date; numbers above 100 billion are read as milliseconds.

epoch 1760000000 shown as Oct 9, 2025 at 3:53:20 PM local time, 8:53:20 AM UTC

epoch followed by a date goes the other way and gives its Unix time in seconds, with milliseconds and the UTC time underneath. These forms are understood:

  • epoch 2024-01-15 (midnight, your time zone)
  • epoch 2024-01-15 10:30 and epoch 2024-01-15 10:30:00 (your time zone)
  • epoch 2024-01-15 10:30:00Z or …10:30:00+07:00, with the zone written right after the seconds
  • A T between date and time also works: 2024-01-15T10:30:00Z

Colours

A hex colour (#RGB, #RRGGBB or #RRGGBBAA) or an rgb() value gives three rows: the hex code, rgb() and hsl(), using rgba() and hsla() when an 8-digit hex code is transparent. ↵ copies the value of the selected row.

#3498db shown as #3498DB, rgb(52, 152, 219) and hsl(204, 70%, 53%)

Kill a process or free a port

Start with kill and a space. Type kill alone to see the hint:

TypeFinds
kill :3000Processes listening on TCP port 3000
kill 3000A number from 81 to 65534 is tried both as a port and as a process ID
kill 14205The process with that ID
kill chromeOpen apps whose name matches
kill nodeCommand-line processes whose name contains the text, with their CPU and memory use
kill :3000 offers to kill Python, the process listening on port 3000, with its PID
A Python dev server on port 3000. Press ↵ to stop it, ⌥↵ to force it.
  • ↵ asks the process to quit: apps get a normal Quit, other processes a SIGTERM.
  • ⌥↵ forces it: Force Quit for apps, SIGKILL for other processes.
  • If the process belongs to another user or to the system, Lightspot asks for administrator rights (Touch ID or your password, see sudo with Touch ID) and kills it with kill as root.

Only programs that listen on the port are listed, not the browser tabs connected to them, and each row is named after the program (Kill Python on Port :3000). Lightspot never offers to kill itself, launchd, kernel_task, WindowServer or loginwindow. The process and port lists are refreshed in the background every couple of seconds while you type, so a server you have just started may appear a keystroke later. Kill results share the four-row Quick Actions section and are not kept in search history.

Typing kill alone shows Force Quit and a Kill Process hint with examples
kill on its own: the hint row, and the Force Quit Applications window as Top Hit.

Hardware readout

Type sys, system, specs, hardware, cpu, ram, battery or uptime (the whole word) for one line with the state of the Mac. ↵ copies a longer report.

System Hardware & Resource Status: CPU, RAM, free disk, battery and uptime on one line
Taken while Swift builds were running, so CPU reads 72%: it is the load average, not a momentary reading.
ValueHow it is measured
CPUThe one-minute load average divided by the number of cores, as a percentage (100% means the cores are fully busy)
RAMActive, wired and compressed memory, out of the installed total, in GB
DiskFree space on the startup disk
BatteryCharge, and whether it is charging or on AC power; “No Battery (Desktop)” on Macs without one
UpTime since the last restart

The values come straight from macOS system calls (Mach, IOKit and sysctl), so no command is run and the line appears as fast as any other result.

IP address

Type ip, my ip, public ip or ipv4 for your local IPv4 address (Wi-Fi or Ethernet) and your public address. ↵ copies both.

IP Address result showing a local and a public address
The addresses here are documentation examples.

The public address comes from a request to api.ipify.org. Lightspot sends it only when you ask: when your query names the IP address clearly (ip, my ip, public ip, ipv4, but not local ip) or when you press ↵ on the row. Otherwise the row shows only the local address and says Press ↵ to copy with public IP. The answer is kept in memory for 15 minutes. More on the privacy page.