πŸ“± Social/Viral

Post Snippet Scheduler

Draft captions, tag each one with a platform and a target date, and keep a sorted local planning list right in this browser.

This is a local draft/reminder list only. Everything is saved in this browser's storage on this device, it is not synced anywhere and will be lost if you clear your browser data. This tool does not publish or auto-post to any real platform: Utility369 is a static site with no backend and no social media API access, so nothing here is ever sent anywhere. It's purely a personal planning organizer for keeping caption ideas next to the date you intend to post them yourself.

About the Post Snippet Scheduler

This is a local draft and reminder list, not a publishing tool. Every snippet you save lives only in this browser's localStorage on this device, nothing is uploaded, nothing is synced across your phone or other computers, and clearing your browser data clears the list too. Since Utility369 is a static site with no backend and no connection to any social platform's API, there is no way for it to actually post on your behalf; saving a snippet just parks the caption next to the date you intend to post it yourself, sorted soonest first so you can see what's coming up.

Each snippet's ID comes from real randomness, not a counter

Rather than assigning IDs sequentially, the tool generates each one from crypto.getRandomValues() β€” the Web Crypto API's cryptographically strong random number source β€” combined with the current timestamp, both converted to base-36. That matters because a simple auto-incrementing counter or a timestamp alone can produce a collision if two snippets are created in rapid succession; mixing in genuine randomness makes that essentially impossible, keeping edit and delete actions reliably targeted at the exact snippet you meant, even if you save several drafts back to back.

Undated snippets sink to the bottom instead of breaking the sort

The scheduled date field is optional β€” you can save a caption idea with no date attached yet. When sorting the list, any snippet without a datetime is treated as if its time were Infinity for comparison purposes, which pushes it to the very end of the sorted list without needing a separate branch of logic to handle "no date" as a special case. Everything with an actual date still sorts soonest-first ahead of it.

Long captions are truncated in the list view, not stored that way

The preview shown for each saved item is capped at 160 characters using a truncate function that also trims trailing whitespace before appending an ellipsis, so a cut-off caption doesn't end mid-word with an awkward dangling space. This truncation only affects what's displayed in the list β€” clicking Edit loads the full, untruncated original text back into the textarea, since only the preview is shortened, not the stored value.

One form handles both creating and editing

There's no separate edit screen β€” clicking Edit on a saved item populates the same text field, platform dropdown, and datetime input used for new snippets, sets a hidden "currently editing" ID, and relabels the Save button to "Update Snippet." A Cancel Edit button appears only while that ID is set, letting you back out of an edit without saving changes; clicking Save while editing patches just the fields on that existing item rather than creating a duplicate.

Dates render using your device's own locale and timezone automatically

Saved timestamps are formatted with toLocaleString(undefined, {...}) β€” passing undefined as the locale tells the browser to use whatever locale and timezone are already configured on the visitor's own device, rather than the tool hardcoding a specific date format or forcing UTC. That means the same saved snippet displays its date and time differently depending on who's viewing it and where, matching what each person would naturally expect to see.

Corrupted or manually edited storage data fails safely

Reading the saved list is wrapped in a try/catch around JSON.parse(); if the stored value in localStorage is ever malformed β€” say, from being edited by hand in devtools, or corrupted by a browser extension β€” the tool falls back to an empty list instead of throwing an error that would break the whole page. Deleting a snippet also requires confirming through the browser's native confirm() dialog first, so a stray click on the wrong Delete button doesn't silently wipe a saved draft.

Frequently Asked Questions

Does this tool actually post my caption to Instagram, X, or any other platform?

No. Utility369 is a static site with no backend or social media API access, so there's no way for it to publish anything. It's strictly a local planning list β€” you still post the caption yourself, on the actual platform, at the time you scheduled.

Will my saved snippets show up if I open this tool on my phone?

No. Everything is stored in this specific browser's localStorage on this specific device β€” there's no account, sync, or cloud storage involved, so snippets saved on one device or browser won't appear on another.

What happens if I clear my browser's cache or site data?

Your saved snippets will be permanently deleted along with it, since localStorage is cleared by the same browser action that clears other site data.

Can I save a caption idea without picking a date yet?

Yes. The date field is optional. Snippets without a date are still saved and shown in the list β€” they just sort to the bottom, below anything that has an actual scheduled date.

Does clicking Edit create a new entry, or update the existing one?

It updates the existing snippet in place. The form switches into an editing mode, and saving while in that mode patches the original item's text, platform, and date rather than adding a duplicate.

Can a deleted snippet be recovered?

No. Deletion is permanent and requires confirming through a browser prompt first, but once confirmed, there's no undo or trash folder to recover it from.