What a SayPage page can contain
The page format: one HTML document with animations, embeds (YouTube, Spotify, Calendly, Google Maps…), approved open source libraries and your own images. What is allowed and what is refused, and why.
You never have to write any of this yourself: your assistant reads SayPage's page guide before it writes a page, and SayPage tells it exactly what to fix when something is off. This page is for the curious, and for knowing what to ask for.
One page, one HTML document#
A SayPage page is a single, self-contained HTML document: its styles and scripts are written inside it, its images are uploaded to SayPage, and it loads nothing from other sites except the embeds and libraries listed below. It is a page, not an app: no build step, no server code, no database.
This is what lets SayPage check every page before it goes online, serve it fast, and keep visitors safe.
What a page can do#
- Animations: entrances, scroll reveals, tap feedback, animated gradients, marquees, counters, confetti, Lottie illustrations.
- Interactive bits: tabs, accordions, filters, ingredient checklists, timers, countdowns, carousels, charts, a search box over the page's own content.
- Embeds: videos, music, bookings, forms, maps and posts from the services below.
- Your images: up to 30 photos per page, uploaded to SayPage.
- One custom font, inlined in the page, from a font file whose license allows it (for example the SIL Open Font License of most Google Fonts). Otherwise, system fonts.
- Links anywhere:
https:andhttp:addresses,mailto:,tel:andsms:. Affiliate links are fine.
Embeds#
Embeds are iframes from these services:
| Service | What for |
|---|---|
| YouTube (including youtube-nocookie.com) | Videos |
| Vimeo | Videos |
| Spotify | Tracks, albums, playlists, podcasts |
| Apple Music | Tracks, albums, playlists |
| SoundCloud | Tracks and playlists |
| Calendly | Booking a call or a session |
| Typeform | Forms and surveys |
| Google Maps | A map of your shop, venue or event |
| A post | |
| TikTok | A video |
A page has no <form> of its own: to collect sign-ups or orders, link to a form on Tally, Typeform or Google Forms, or embed a Typeform. Videos and music are embedded from the services above rather than uploaded.
Libraries#
Pages may load these open source libraries, served by SayPage at pinned versions (your assistant gets their exact addresses from the list_libraries tool):
| Library | What for | License |
|---|---|---|
| Alpine.js (CSP build) | Small interactive components | MIT |
| Motion | Animations | MIT |
| Anime.js | Animations | MIT |
| Swiper | Carousels and sliders | MIT |
| canvas-confetti | Confetti | ISC |
| Chart.js | Charts | MIT |
| Lucide | Icons | ISC |
| AOS | Animate on scroll | MIT |
| Lottie (light player) | Vector animations | MIT |
| Day.js | Dates and countdowns | MIT |
What SayPage refuses#
Some things are refused because they could harm visitors or because SayPage could not check them:
- Forms and sensitive fields:
<form>, password fields and card-number fields. - Network access from scripts: pages cannot call other servers, so a page cannot quietly send visitors' data anywhere.
- Tracking and storage: no cookies,
localStorageor other browser storage, and no analytics scripts. SayPage counts visits itself, without cookies. - Redirects and pop-ups: scripts cannot send visitors elsewhere, open windows or change where a link goes. Every link is written in the page with its final address.
- Link shorteners (bit.ly, tinyurl, t.co…): links must show where they really go.
- Hidden or encoded code: scripts must be readable (no minified or encoded code, at most 100 KB of JavaScript), and pages carry no embedded files.
- External images, scripts and fonts, other than the embeds and libraries above.
- Advertising (ad networks) and crypto wallet addresses.
- Hiding the SayPage badge or stopping its links from working.
And, whatever the code: phishing, impersonation of a brand or organization, scams, sexual, hateful, violent or dangerous content, and anything illegal. See Privacy and safety.
Size limits#
| Limit | Value |
|---|---|
| HTML, with its CSS and JavaScript | 128 KB |
| JavaScript | 100 KB |
| Images per page | 30 |
| Page and images together | 10 MB |
Inline SVG icon or data: image |
16 KB each, 64 KB of data: URIs per page (font included) |
How pages are served#
Every page is served on your site's address, over HTTPS, with a strict security policy written for that page: it can only load what it was published with. Pages are cached for a short time, so a new version shows up within about a minute of publishing.