About
A toolbox that does one thing, in one language
CR Tools is the PHP half of cristianrenosto.party: the main site is Next.js on Node, this one is plain PHP on the same machine. Two stacks because they solve different problems — and because PHP is the right tool for "form in, HTML out, no build step, works on any cheap host".
By Cristian Renosto, Treviso, Italy. Write here or use the main site's contact page.
How it is built
- One front controller, a small router, controllers that return a
Response. - Views are plain PHP templates with a single layout; no template engine, no build step.
- SQLite with WAL for everything that is stored. One file, one
sqlite3backup. - Vanilla JavaScript, three files, no framework: theme, copy-to-clipboard, command palette.
- CSS written by hand in one file, with the same palette as the main site.
What it does with your data
Nothing you paste into a tool is stored: one request, one response, done. The only things kept are your own workspace records and, if you write through the contact form, the message. IP addresses are truncated before being written. Two strictly necessary cookies, no analytics. Full privacy notice · cookies
What is inside
8 groups
Text & data
JSON Formatter, Regex Tester, Text Lab, Diff Checker, Markdown Preview
Encode & images
Encoder & Decoder, QR Generator
Security & crypto
Hash & HMAC, Passwords
Time & dates
Time & Dates, Cron Reader
Design
Color & Contrast
Generate
Generators
Web
HTTP Inspector
Workspace
Code Snippets, Notes, Bookmarks, Time Tracker, Uptime Monitor, Inbox, Data & Backup
Limits, stated up front
Better than a surprise later
QR codes: versions 1-6, level M
Enough for URLs, WiFi credentials and short text (about 106 bytes). Longer content is refused with a clear message instead of producing a code that nobody can scan. The encoder is written from the specification and its output has been verified against an independent decoder, module by module.
Regex: no way to interrupt a match
PCRE can backtrack exponentially, and PHP offers no timeout inside preg_match.
The subject is therefore capped and patterns longer than 1000 characters are refused;
a pattern that looks catastrophic is flagged in the interface.
HTTP inspector: public addresses only
Requests to private, loopback, link-local and reserved addresses are refused, and redirects are re-checked at every hop, so the server cannot be used to read a router or a cloud metadata endpoint. Responses are never cached, and the tool is rate limited.
Markdown is a subset
Headings, lists, tables, code, quotes, links, emphasis: what people actually use. Raw HTML is escaped before anything else happens, so it is never interpreted. No footnotes, no raw HTML, no plugins — on purpose.
Server configuration
Useful when something misbehaves
| Loaded extensions | pdo_sqlite, sqlite3, mbstring, curl, json, hash, gd, openssl, zlib |
| Application URL | https://php.cristianrenosto.party |
| Main site | https://cristianrenosto.party |
| Storage path | /home/cristian/php.cristianrenosto.party/storage |
| Timezone | Europe/Rome |
| Workspace token | configured |
Questions, corrections or a tool that is missing: write here — it lands in the inbox of this subdomain, not in a third party.