Self-hosted, single-page "In Case of Emergency" (ICE) medical info page for a QR code on a wristband, phone case, or wallet card — critical info shown instantly, sensitive details locked behind an unl
Translation pending
HealthPHP · JavaScriptGitHub @MichelleFindlayOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Self-hosted, single-page "In Case of Emergency" (ICE) medical info page for a QR code on a wristband, phone case, or wallet card — critical info shown instantly, sensitive details locked behind an unlock word. (Demo unlocks using "demo")
Taken from the repository README
Loading the full README.
Read the full README ↗A single-page, self-hosted "In Case of Emergency" (ICE) medical info page, meant to be linked from a QR code on a wristband, phone case, or wallet card. Critical medical information (conditions, allergies, medications, blood type, DNR status, etc.) is shown immediately to anyone who opens the link — no login, no app, nothing to install — while your home address, phone numbers, and NHS/policy number stay hidden behind a private unlock word until someone who needs them types it in.
(Shown with the example placeholder data — see Setup below.)
The idea behind ICE (In Case of Emergency) contacts is old — it's normally just a contact named "ICE" in your phone.This does the same job but as a page a first responder can actually read without unlocking your phone: conditions, allergies, medications, and care team all in one place, reachable by scanning a QR code or going to a URL. With contact and sensitive information locked behind a simple word that is unique.
?testUpdateBanner=1 appended to
the URL.noindex/X-Robots-Tag
headers so the page doesn't turn up in search engines.index.php file plus a small vendored QR library.Copy this repo to any PHP-enabled web server (PHP 7.4+, no extensions
or database required — just session support, which is built in).
Copy each *.example.php file to the same name without .example, and
fill in real values:
| Copy this... | ...to this | Contains |
|---|---|---|
config.example.php | config.php | The unlock word, and the site's URL |
profile-data.example.php | profile-data.php | Everything shown openly (name, conditions, medications, care team, history) |
sensitive-data.example.php | sensitive-data.php | Address, phone numbers, NHS/policy number — gated behind the unlock word |
photo.example.png | photo.png | A photo shown in the header (optional — a fallback with your initials shows if it's missing) |
These four files are all gitignored, so your real data is never
committed. index.php itself never needs editing — it's just the
template — so a future update to it won't overwrite your content.
Deploy over HTTPS. The unlock word is a privacy screen against a casual glance, not a security boundary — see the security note below — and HTTPS keeps it from being visible in transit.
Visit the page, confirm the layout and unlock word work, then use the QR code generator button to get a scannable code for the page, or the Print card button to print a wallet-sized card with the URL and QR code on it. Put the QR code (or the printed card) on a wristband, phone case, or in a wallet.
config.php, profile-data.php, sensitive-data.php, and photo.png
are all gitignored. Double-check git status before committing if
you've renamed or restructured anything, so real personal data never
ends up in the repo.QR code generation uses qrcode-generator
by Kazuhiko Arase (MIT licensed), vendored in qrcode.lib.js so it runs
entirely client-side with no external requests.
GPL-3.0. See LICENSE.