FAQ
what this button do?
Is slowly updating!
Here you'll find questions categorized by colors you might have about what is what. I'll add more content slowly as I get more questions.
Show All Questions
Universal Questions
Questions about src
Questions about URL Maker
Questions about the Home Site
Questions about the visits checker
Questions about ShowHistory
If you have any questions, please feel free to ask! I'll do my best to include them asap.
FAQ (Frequently Asked Questions)
It's me, StellarStoic! Unknown to the world because I always keep my distance from it. But you can find me on the protocols like Nostr and ...Nostr
If you find something you believe is illegal, disturbing, or malicious, you can report the URL by emailing to report@snofl.com. Please provide as many details as possible about the URL in question in your email. I will do everything within my power to make the URL inaccessible if it is found to violate our policies.
The "Your Content" section is where you present your content to the end user. You can type freely and structure it as you like.
You can embed a Nostr note by pasting its reference with the nostr: prefix:
nostr:nevent1…— the id and the relays it was seen on, which is what most clients hand you when you copy a note's linknostr:note1…— the bare id, still supported for older links
note1... and nevent1... work. nevent1 is what most
clients give you when you copy a note's link, and it is the better choice here: it carries the
relays the note was seen on, so the page fetches it from there instead of guessing.
Profile references (npub, nprofile) are not embedded—sorry!
You can also include links to images or videos to display them in your custom page. Both Vimeo and YouTube links are supported and will generate thumbnails.
QR codes can be embedded using the
qr: prefix, such as qr:somethingSomething. Some QR codes can include logos, which are used with specific prefixes:
bitcoin:lightning:ecash:monero:
Links starting with
https:// will be formatted to open on click.
Note: Script tags are not supported in this section. If you attempt to post code, the URL will be invalid for the end user. If you must share code, take a screenshot and upload it as an image link instead.
ShowHistory is everything this browser posted, and nothing else — it is read out of
this device's storage, not from a server or from the relays.
Each ID you have used gets its own card:
- a coloured dot and the random name it was given (weepy_bumph_13), with the number of notes posted as that ID beside it
- your public key, in full — click it to copy
- Reveal private key: asks first, shows the key for ten seconds with a countdown beside it, then hides it again
- a QR button that draws the key as a code, so you can import the ID into a signer or another Nostr client
At the bottom of the sheet, two actions:
- Download history — exports everything as a JSON file
- Delete all data — wipes every ID and note this browser holds, after two confirmations
I am aware of the security risks of keeping private keys in a browser, but these are disposable IDs, and you should treat them as such.
When you post a response (a note), you receive feedback containing the event details. The note has been broadcasted to Nostr relays and is now part of Nostr forever.
You have several options to search for your note:
- Use src to look up similar content.
- Copy the event ID in the event details and search for it manually.
- Visit njump.me using the buttons below the event details.
- Copy the event ID with a button bellow the event details and search for it manually.
If you lost track of your posted note details, don't worry. All your posted notes are stored in the ShowHistory section, located in the footer below.
Yes — src is the discovery page. It looks up
content on the Nostr relays that support
NIP-50, and it
searches by itself the moment it opens: type nothing and you still get what the relays hold, so the
box is for narrowing, not for starting.
Several keywords at once work, and ANY / ALL decides whether a
result has to match one of them or every one. Under each result there is a row of controls: hide the
ones you do not want, block a publisher whose notes you never want to see again, and vote.
Voting is ▲ / ▼ with the counts inside the arrows. One npub counts once, changing
your mind moves your vote instead of adding another, and pressing the arrow you already pressed
withdraws it — the counts are read back off the relays, so they are the same for anybody who opens
the page. Your own vote is tinted.
The badge in the top right is the key those votes are signed with: a random ID kept in your browser,
held for 24 hours before it can be replaced, the same identity a custom page uses. Reading needs no
identity at all.
A page you make with hashtags links to src, so people who find the tag find the page.
They are ordinary Nostr reactions (NIP-25, kind 7) tagged with that note's id and its
author, signed by your own key — nothing about them belongs to snofl.
One npub counts once. The tally is kept per note as a map keyed by public key, so
publishing the same + fifty times, or from five different apps, still reads as one
upvote. NIP-25 says the latest reaction wins, so changing your mind moves your vote from one
side to the other instead of counting on both. Pressing the arrow you already pressed withdraws it:
that publishes a NIP-09 deletion (kind 5) naming your reaction, and relays that honour
it stop serving the reaction — so it stops counting for everyone who loads the page afterwards, not
only for you.
The numbers sit inside the arrows themselves, ▲ 5 ▼ 1, and tapping a number votes exactly
the way the arrow does. Your own vote tints its count green or red.
What you see is the union of what the relays src searches returned, so a vote that only reached one
relay shows once, and a relay that ignores a deletion keeps that vote alive on that relay. There is no
server of ours in the middle to arbitrate.
No account, no email, no sign-up. src uses the same identity a custom page does: a random key kept in
your browser with a name like quiet_lake_07, and it is held for 24 hours before it can be
replaced (the ring around the badge shows how far through those 24 hours it is).
The badge in the top right shows the key your votes are signed with, and it is also where you replace
it once the 24 hours are up. Reading and searching need no identity at all; only voting does, because
an unsigned reaction is something a relay has no way to attribute.
The same key is used by the pages you open from snofl links, so a vote here and a note there carry the
same name.
NTAG memory has been set with a careful reading of the NXP documentation papers
NTAG Memory Comparison
| NTAG Type | Total Memory | User Memory | Max NDEF (Writable Data) | Max Text (Char.) | Max URL (Char.) | Use Case |
|---|---|---|---|---|---|---|
| NTAG 203 | 168 bytes | 144 bytes | ~137 bytes | 137 | 135 | Short URLs, automation |
| NTAG 213 | 180 bytes | 144 bytes | ~137 bytes | 137 | 135 | Basic vCards, small automation |
| NTAG 215 | 540 bytes | 504 bytes | ~492 bytes | 492 | 490 | Amiibo, longer vCards |
| NTAG 216 | 924 bytes | 888 bytes | ~868 bytes | 868 | 866 | Large records, WiFi configs |
| NTAG 413 DNA | 416 bytes | 404 bytes | ~398 bytes | 398 | 396 | Secure URLs, anti-counterfeit |
| NTAG 424 DNA | 928 bytes | 916 bytes | ~888 bytes | 888 | 886 | Secure vCards, payments |
One button per thing a rendered page can actually show, and every one of them writes where your cursor
is. Select a few words first and the button wraps them; press it with nothing selected and it inserts
an example already selected, so you type straight over it. The name under each button says
what it does, so nothing depends on hovering — which matters on a phone.
A page renders HTML, not Markdown. **bold** and # heading
would stay as literal characters, so the Bold button writes <b>, Heading writes
<h2>, and Table and Fold write a real <table> and
<details>. The one Markdown form the page honours is
[the words](https://address), which is exactly what Link writes.
What is there: bold, italic, underline, strike, highlight, small, two heading levels, bulleted and
numbered lists, quote, inline code, preformatted, table, fold, horizontal rule, link, image, note
reference, calendar event, the five QR prefixes and poll — 26 in all, in a row that scrolls sideways.
Ctrl/Cmd + B, I and K do the same as
the first three.
After each press the line under the strip tells you what it just added and what it cost: this text
lives in the link, and the link has to fit a tag. Around a word, <b>…</b> is
16 bytes in the URL, <hr> is 14, and the table template is 182.
Yes — calendar events are NIP-52, kinds 31922 (whole days) and 31923 (a time),
and a page draws one as a card with the title, the date, the place, the summary and optionally an image,
instead of treating it as a note.
Press Calendar in the strip: it opens a short form — title, time or whole days, timezone,
place, summary — publishes the event under your own identity and drops its reference into the content.
If you already have a reference from somewhere else, that form's second button hands you the caret with
nostr: ready. Both forms work:
nostr:naddr1…— what clients hand you for a calendar event, because these events are addressable: the author can replace one, so its coordinate (kind + author + identifier) is the right handle rather than an idnostr:nevent1…— an event id with relay hints, still drawn as a card if the event turns out to be a calendar entry
start_tzid), otherwise in
yours. A whole-day event's end date is exclusive in NIP-52, so "1 May to 4 May" is shown as
1–3 May, which is what the author meant.
The card also carries the three answers — Attending, Maybe, Declined. Pressing one publishes an RSVP (kind
31925) signed by your own
key: an a tag naming the event's coordinate, a status, and a
d that is the coordinate itself, so answering again replaces your previous answer instead
of piling up. The counts beside each button are read back off the relays — newest answer per person,
so nobody can be counted twice — and your own choice is tinted. Changing your mind moves the count
rather than adding one. RSVP needs a Nostr ID on the page; without one the card says so instead of
failing quietly. Adding an event to a calendar app from the page is not there yet — "open in njump" is
the way out.
As you. The form in the maker signs with whatever identity you chose in the maker — a browser extension,
a remote signer, or the anonymous key that lives in this browser — and publishes kind
31923 (a time) or 31922 (whole days) to the relays in the maker, or to the
defaults when you have not set any. The status line under the form says how many relays took it, and
when none did, it repeats what they said instead of failing quietly.
Because these events are addressable, the reference is a coordinate (kind + author + identifier),
not an id: republish the same identifier and every page pointing at it shows the new details. That also
means the event belongs to the identity that signed it — publish it anonymously and it stays with that
anonymous key, so it is worth signing in first if the event matters.
Times are sent in unix seconds with start_tzid so a reader in another country sees their own
clock time. For a whole-day event the form turns the last day you picked into an exclusive end date,
which is what NIP-52 expects — pick one day and the card shows one day, not two.
Press Poll in the content toolbar for a small form: the question, two to six answers,
and how many of them one person may give. Press Insert into the content and it is written into
the page. You can also type it by hand:
[poll:Your question|First choice|Second choice]
Two to six options. [poll2:…] lets each person pick two instead of one — the digit is how
many answers a person may give, and it is the form's "Each person may give" choice. Put the caret on a
poll you already wrote and press Poll again to reopen it with its values.
The poll is not a room message: the declaration travels inside the link, so every reader sees the same
question and nobody has to publish it first, and only the answers go to the room, using the
same NIP-88 payloads, mining and counting the room already uses. Its id is derived from what the poll
says, which means moving spaces or changing case cannot shift everybody's answers onto a different
question.
On the finished page the card sits above the notes with the question, the options and the counts.
A poll appears only when the link declares one — the maker is the only place a poll
comes from, and a page without [poll:…] in its content shows no poll and no poll button at
all.
Yes. One is where the visitor starts, the other is how long their note may be, and they were once
mutually exclusive for no good reason — switching one off cleared the other.
There is one rule between them: the suggested message has to fit inside the limit. While you type, the
limit row says where you stand — The suggested message is 44 characters, leaving 236 for the
visitor — and turns amber when it no longer fits.
If it does not fit, no link is made at all and the reason is spelled out, rather than a link that would
quietly change what you wrote once the visitor's box caps the text.
Both controls live in Visitor options, together with Public notes, because a suggested
message only means something when a visitor may post at all: with Public notes off the message switch
is unavailable rather than merely pointless.
Press Done in its top right corner, press Escape, or click the dimmed
background. All three only close the editor — the content stays switched on, stays in the field and
stays in the link.
That is worth stating because it was not true before: the editor's open state was the content
switch, so the only way out also took p out of the link and the page you had just written
stopped existing. Write in full view opens the editor again without touching anything.
Inserting from the button strip never takes the screen either: the editor opens on a real flip of the
switch, not because a button enabled the field behind your back.
Not while the browser session lasts. The content, title, subtitle, suggested message, the three
hashtags, the three relays and their switches are saved in sessionStorage as you type and
restored when the page loads — switches first, so no value lands in a field that is still disabled, and
the link is rebuilt with them. A reload never puts you back into the full-screen editor.
Close the browser and it is gone. That is deliberate: the draft never leaves your device, nothing is
stored on the server, and it does not follow you to another computer.
Clear draft throws it away on purpose. The styling choices — avatar, font, background,
Lightning address, encryption — are not part of the draft; those you pick per link.
The current font used on this website is loading....
You don't like the loading... font? Not a biggie! Click here to choose a new random one.
The security of the URL encryption on this platform relies on AES (Advanced Encryption Standard), specifically AES-256. This encryption standard is widely recognized as one of the most secure methods available today and is used globally to protect sensitive data, including government and financial information.
🔐 What Makes AES-256 Strong?
- Key Length: AES-256 uses a 256-bit encryption key, offering 2256 possible combinations. This is a number so large that even modern supercomputers would take billions of years to brute-force it.
- Cryptographic Strength: AES is a symmetric encryption algorithm, meaning the same key is used for encryption and decryption. This simplicity ensures high speed without compromising security.
Examples of Password Strength and Brute-Forcing
| Password Length/Type | Time to Crack (Brute Force) |
|---|---|
| Weak (e.g., "12345") | Instantly |
| Moderate (e.g., "P@ssw0rd") | A few hours with modern hardware |
| Strong (e.g., "F&2zL!8x9wXy@#Tp") | Over 1 trillion years |
Best Practices for Maximum Security
- Choose a password with a minimum of 12 characters, including uppercase, lowercase, numbers, and special symbols.
- Avoid common words, predictable phrases, or keyboard patterns.
- Store passwords in a secure password manager instead of relying on memory.
A Brief History of AES
AES was established as the encryption standard by the U.S. National Institute of Standards and Technology (NIST) in 2001. It replaced the older DES (Data Encryption Standard) due to advancements in computing power that made DES vulnerable. AES was selected through a global competition and is based on the Rijndael cipher, designed by cryptographers Joan Daemen and Vincent Rijmen.
Why Privacy Matters
Protecting sensitive information like URLs ensures that your personal data and activity remain private. Encryption plays a crucial role in safeguarding secure links and confidential content, providing peace of mind that unauthorized access is nearly impossible. However, centralized institutions have a poor reputation for securely storing personal data, highlighting the need for individuals to take control of their privacy. While encryption is a powerful tool, it’s only as strong as its weakest link—humans. Mistakes, phishing, and social engineering can compromise even the most robust security systems. Empowering users with knowledge and awareness is just as important as using strong encryption.
Always remember: The strength of encryption depends on the strength of your password, your opsec and people you share this password with!
Every link you shorten is kept on my server rather than on Nostr: the long address sits in a small database and the short code only redirects to it. The chck page reads that one row and tells you:
- how many times the short link has been opened,
- when it was last opened (UTC),
- the long address it points at,
- how old the short link is, and
- how long it has left before it is deleted.
You can reach it from the footer as chck, or straight from the QR window: right after you make a short link, Check this link's visits opens the page with the code already filled in.
Short links are kept for 2,100 days — a little under six years — and the page counts that down to the hour. If something had to be removed because of a report, the page says so instead, with the date, how many times it had been opened and the reason.
One thing worth knowing: those numbers are not private to you. Anyone who has the short code can open the same page and see the same count, the last visit and where it points — the lookup answers one code at a time, so nobody can walk the whole list. If the destination is something you would not want a stranger to read, do not shorten it.
You can't
Four controls, all optional, all in Visitor options:
- Public notes — off writes
n=0and the page offers only the encrypted room. On, a visitor may post a note anyone can find, with the hashtags you chose. - Suggested message —
m=, the text they start from. - Visitor can edit it — off writes
mr=1and the field becomes read-only: still readable, still selectable, still posted, just not rewritable. The page says the author wrote it. - Max characters —
l=, between 1 and 5000, 280 if you say nothing.
Watch the byte count above the buttons in the link panel — it reads
Remaining bytes: … (Current bytes: …) for the tag you picked, green while it fits and red
when it does not, and it updates as you type (on a phone too, where it sits in the pinned panel).
The content is usually the long part, and it is URL-encoded on top of that: every
< and </> becomes %3C / %3E, three bytes
each, and every space becomes %20. A table template on its own is 182 bytes.
In practice: drop whatever the page does not need, shorten the wording, skip a custom background or
avatar if you can live without it, choose a bigger tag (NTAG213 → 215 → 216), or shorten the finished
link with the built-in shortener — the long URL is stored on the server and you get a short one to
write.