Free, open-source diagnostic tools for front-desk IT. Each tool runs in your browser: peripheral checks use your own local drivers, and network checks reach only the endpoints they name. No accounts, no tracking, no telemetry.
Live: https://desktest.net
Every page on this site follows the same three rules:
- One page, one question. A diagnostic should give a clear pass or fail in under a minute. No menus, no settings panels, no decisions to make before running the test.
- Your data never leaves your computer. Peripheral checks happen locally against your installed drivers and services; network checks contact only the endpoints they name (public CDNs or the edge relay) to measure the connection, never your files or inputs. No backend, no analytics, no telemetry. View source to verify.
- No accounts, no tracking, no monetization-via-data. The trust posture is the moat. If you ever see a "sign up" or third-party script tag on this site, something has gone wrong.
| Tool | Path | What it tests |
|---|---|---|
| Full Workstation Checkup | /checkup/ |
One-click health report: browser, system, performance, network, web apps, clock - plain-language, sendable to IT |
| Connection Check | /connection-check/ |
Is it your Wi-Fi, your ISP, or the service? Layered plain-language verdict (reachability, ping soak, throwaway speed bytes, cloud-app reachability, clock) + provider-ready report; edge.desktest.net only |
| Meeting Readiness | /meeting-check/ |
One-click video-call go/no-go: camera, mic, speaker, echo, device selection, call-grade network; ?mode= framing (interview/telehealth/streaming/hearing/agent) |
| Front-Desk Station Check | /station-check/ |
Guided checklist across check scanner, printer, signature pad, card reader, barcode scanner; one combined station report for IT |
| Phone Check | /phone-check/ |
Test a phone/tablet in the browser, no app: touchscreen, motion sensors, cameras, mic, speaker, vibration; honest list of what a browser can't check (battery health, IMEI) |
| Display Check | /display-check/ |
Guided full-screen screen grading: dead pixels, backlight bleed, OLED burn-in, response-time ghosting, gradient banding, plus automatic HDR + wide-gamut detection; you judge, it records and reports |
| Scanner Test | /scanner-test/ |
FIS WebScan check scanner (Digital Check / Panini / etc.) |
| Signature Pad Test | /sigpad-test/ |
Topaz SigWeb signature pad |
| PDF Test | /pdf-test/ |
Browser PDF rendering, form fields, print |
| Printer Test | /printer-test/ |
Guided printer test pattern (alignment, color, fine text) |
| SiteLink Test | /sitelink-test/ |
SiteLink Web Edition / myHub browser readiness |
| Microphone Test | /mic-test/ |
getUserMedia audio, level meter, playback |
| Recording Quality Check | /recording-check/ |
Mic setup graded against podcast/audiobook (ACX) targets - peak level, noise floor, clipping - with plain-language fixes |
| Webcam Test | /webcam-test/ |
getUserMedia video, resolution, FPS |
| Camera Quality Check | /camera-quality/ |
Delivered frame rate, lighting, and backlight grading - not just advertised resolution |
| Speaker Test | /speaker-test/ |
Web Audio tone in left/right channels |
| Echo and Latency Test | /echo-test/ |
Speakerphone echo/feedback detection + audio round-trip latency (Web Audio chirp) |
| Keyboard Test | /keyboard-test/ |
Per-key visual keymap, stuck-key detection, modifiers |
| Keyboard Layout Test | /keylayout-test/ |
Keyboard-layout mismatch (US/UK/AZERTY) that types the wrong characters |
| Display Test | /display-test/ |
Color patterns, dead-pixel scan, resolution |
| Refresh Rate Test | /refresh-rate/ |
Monitor's actual refresh rate - catches a 144Hz panel Windows defaulted to 60Hz |
| Accessibility and Zoom Check | /access-check/ |
Whether zoom, contrast, and accessibility settings reach the browser (matchMedia) |
| Browser Test | /browser-test/ |
UA, security context, storage, modern API support |
| Cache and Update Test | /cache-test/ |
Registered service workers and their state, cache storage, and how to force an update; read-only |
| Browser and OS Currency Check | /currency-test/ |
Out-of-date or end-of-life browser / Windows build flagged as a security liability |
| Security Key Test | /security-key-test/ |
FIDO2 security key (YubiKey) or platform authenticator (Windows Hello / Touch ID) via a throwaway WebAuthn credential; nothing stored or sent |
| System Info | /system-info/ |
CPU, memory, GPU, display, OS, network, storage - what the browser can detect, locally |
| Font Presence Check | /font-check/ |
Confirms required fonts (including MICR + barcode) are installed |
| Web App Readiness Test | /webapp-test/ |
Popups, cookies, notifications, clipboard - the browser policy that blocks vendor web apps |
| Notification Test | /notification-test/ |
Desktop/browser notifications: requests permission, fires a real test, catches browser-blocked + OS Focus Assist / Do Not Disturb |
| Clipboard Test | /clipboard-test/ |
Copy, paste, and image-paste (RDP/Citrix/locked-down browsers); pasted content never leaves the tab |
| Performance Test | /perf-test/ |
"Is this PC slow?" - CPU, rendering, memory, main-thread responsiveness |
| Screen Share Test | /screenshare-test/ |
Can this machine share its screen in Teams/Zoom/Meet (getDisplayMedia) |
| Kiosk Readiness Check | /kiosk-test/ |
Kiosk go/no-go: stays awake, holds fullscreen, locks down (Chromium for full lockdown) |
| Barcode Scanner Test | /barcode-test/ |
USB barcode/QR scanner (keyboard-wedge): capture, symbology + check-digit, Enter-termination |
| Card Reader Test | /card-reader-test/ |
USB magnetic-stripe card reader (keyboard-wedge): masked, nothing stored, nothing sent |
| NFC Tag Test | /nfc-test/ |
Tap an NFC tag (review, menu, product) to confirm it reads and see what is on it; tag content stays on the device (Web NFC, Android Chrome) |
| Touchscreen Test | /touch-test/ |
Touchscreen: touch registration, dead-zone mapping, multi-touch (Pointer Events) |
| Pen and Stylus Test | /pen-test/ |
Pen/stylus (Wacom, Surface Pen, Apple Pencil): pressure, tilt, hover, eraser, barrel button (Pointer Events) |
| Call Readiness Test | /call-test/ |
Video-call pre-flight: camera, microphone, speakers, and network latency |
| Device Selection Check | /device-sanity/ |
Right mic/speaker/camera for a call: virtual-cam detection, mic-level check |
| Network Test | /network-test/ |
Public CDN reachability, DNS-over-HTTPS, WebSocket egress |
| Speed Test | /speed-test/ |
Real download/upload throughput (Mbps) + Teams/Zoom video-mode headroom; the bandwidth Network Test skips |
| Connection Stability Test | /socket-stability-test/ |
~45s WebSocket connection-stability watch for flaky Wi-Fi that drops long sessions |
| USB Device Test | /usb-test/ |
WebUSB and WebHID chooser, device descriptor inspection |
| Bluetooth Test | /bluetooth-test/ |
Pair a Bluetooth (BLE) device for web apps - hardware wallets, IoT/smart-home portals, fitness/medical apps (Web Bluetooth, Chrome/Edge) |
| Serial Peripheral Test | /serial-test/ |
Receipt printer / cash drawer / pole display on a COM port (Web Serial, Chromium) |
| Mouse Test | /mouse-test/ |
Pointer buttons, scroll wheel, polling rate, movement smoothness |
| Controller Test | /controller-test/ |
Game controller/gamepad: buttons, sticks, triggers, D-pad, stick drift, vibration (Gamepad API) |
| MIDI Test | /midi-test/ |
MIDI keyboard/pad/controller: detect connected devices, live note and control input (Web MIDI, Chrome/Edge) |
| WebRTC Test | /webrtc-test/ |
STUN reachability, ICE gathering, in-page peer connection (Zoom/Teams/Meet readiness) |
| Proxy Test | /proxy-test/ |
Detects a corporate proxy or TLS/SSL inspection between the browser and the internet |
| Clock Test | /clock-test/ |
Flags system-clock skew that breaks HTTPS, domain logins, and 2FA |
| SaaS Reachability Test | /saas-test/ |
Whether Microsoft 365, Google, Salesforce, Dropbox, DocuSign, Zoom, and Slack are reachable - down for everyone, or just your network |
| Email Header Check | /email-check/ |
Local analysis of a suspicious email's headers for spoofing and phishing; nothing uploaded |
| Certificate Check | /cert-check/ |
Local X.509 certificate inspection: issuer, validity, SAN, self-signed; nothing uploaded |
| File Hash Check | /hash-check/ |
Local SHA-256/1/512 to verify a download against a vendor's published hash; nothing uploaded |
Every tool has a companion guide at /<tool>/guide/ with detailed diagnosis explanations and IT-admin notes.
Static HTML and JS only. No build step, no framework, no runtime backend.
desktest.net/ # served by Cloudflare Pages
index.html # hub
404.html
_headers # per-path Content-Security-Policy
sitemap.xml
robots.txt
.well-known/security.txt # security contact (RFC 9116)
LICENSE # AGPL-3.0
<tool>/
index.html # the diagnostic
app.js # tool-specific driver
guide/index.html # the guide
about/index.html
help/
getting-started/index.html
deployment/index.html
_shared/ # design-system reference + tool template (served, not linked)
components.html
tool-template/
docs/ # SHA-256 hashes for bundled third-party (served; guides link them)
scripts/check_csp.py # CSP validator, run in CI
workers/edge/ # Cloudflare Worker (WS echo + whoami/time/reach/captive/gen/sink) - the far end for every tool and flow that measures reachability, latency, or throughput
og.png # social share image
Each tool's index.html inlines its own CSS and a single <script src="app.js">. The CSP for each path is locked to whatever local origin it needs and nothing else. Trust is provable from view-source.
Every tool ships with:
- Copy Diagnostic Report button (plain text, paste into a ticket).
- Send to your IT button (
mailto:with the report pre-filled). - Interactive fix checklist (click each step as you complete it).
- Run test again button under failed verdicts.
- White-label (optional): pass
?org=<name>and?support=<email>to stamp the page with your organization and route "Send to your IT" to your help desk - see the deployment guide. - Light + dark mode (
prefers-color-scheme). - WCAG AA accessibility baseline (
aria-live, focus-visible, semantic<header>,prefers-reduced-motion).
No build. Any static server works:
python3 -m http.server 8080Then open http://localhost:8080. To test localhost-talking tools (Scanner Test, Signature Pad Test), you need the corresponding vendor service running on the same machine (FIS WebScan or Topaz SigWeb).
The repo deploys cleanly to Cloudflare Pages:
- Connect the repo, set output directory to
/, no build command. - Add
desktest.netas a custom domain. - The
_headersfile is read automatically for per-path CSP.
Code is licensed under AGPL-3.0-or-later. See LICENSE for the full text.
This means:
- You can use, modify, and distribute the code freely.
- If you modify it and run it as a network service, you must offer the source of your modifications to your users.
- Derivative works must also be AGPL.
Commercial licensing without AGPL obligations is available from the copyright holder. Contact hello@tech1k.com. This is the same code, relicensed for buyers who want to embed it in a proprietary product or who cannot accept the AGPL terms.
sigpad-test/SigWebTablet.js is Topaz Systems Inc. proprietary code, bundled unmodified. Topaz publishes the canonical file at http://www.sigplusweb.com/SigWebTablet.js and asks integrators not to alter it. The bundled SHA-256 is recorded at docs/sigwebtablet-sha256.txt for verification.
scanner-test/utif.js is UTIF.js (MIT, Photopea), bundled unmodified. It decodes the CCITT Group 4 TIFF images FIS WebScan returns (a format no browser renders natively) to a canvas so the scanned check can preview inline. The bundled SHA-256 is recorded at docs/utif-sha256.txt for verification.
Pull requests welcome. Before you start, please read CONTRIBUTING.md. Contributions require a Contributor License Agreement so commercial dual-licensing remains possible.
Security issues: see SECURITY.md.
Maintained by Kristian. DeskTest.net exists because front-desk IT deserves better tools than "have you tried reinstalling the driver?"