Mastodon does not include a built-in scheduling feature in its official web client. Many business users need to schedule posts to maintain a consistent presence across time zones. Third-party tools like Buffer and Hootsuite offer scheduling for Mastodon, but they require additional accounts and setup. This article explains how to use a free, browser-based workaround to schedule Mastodon posts directly from the official web interface without third-party services.
Key Takeaways: Schedule Mastodon Posts Without Third-Party Tools
- Browser Developer Tools (F12 > Console): Run a JavaScript snippet to schedule a post at a specific UTC time.
- Mastodon API endpoint /api/v1/statuses: Accepts a scheduled_at parameter in ISO 8601 format for delayed posting.
- ISO 8601 timestamp format: Required format is YYYY-MM-DDTHH:mm:ss.sssZ (e.g., 2025-06-15T14:00:00.000Z).
How Mastodon Scheduling Works in the Official Web Client
The official Mastodon web client does not expose a scheduling button in the compose panel. The scheduling capability exists at the API level. The /api/v1/statuses endpoint accepts an optional scheduled_at parameter. When you include this parameter with a future timestamp, Mastodon queues the post and publishes it at the specified time. The web client simply does not provide a user interface for this parameter.
To use this feature, you must send a POST request to the API with the scheduled_at parameter. The easiest way to do this from the browser is to use the JavaScript console in your browser’s developer tools. This method works on any Mastodon instance and does not require installing extensions or granting API tokens manually. Your browser session already has an active authentication token, which the script reuses.
Prerequisites
Before you begin, confirm the following:
- You are logged into your Mastodon instance in the official web client.
- You know the exact UTC time when you want the post to publish. Mastodon scheduling uses Coordinated Universal Time. Convert your local time to UTC before proceeding.
- Your post content is ready. The script accepts plain text, hashtags, and mentions. Attachments and polls are not supported with this method.
Steps to Schedule a Mastodon Post Using Browser Developer Tools
- Open the compose panel in the Mastodon web client
Click the compose button or press N on your keyboard to open the post composer. Type the full text of your post. Do not click Publish yet. - Open browser developer tools
Press F12 on Windows or Cmd+Option+I on macOS to open developer tools. Click the Console tab. You will see a blank prompt. - Paste the scheduling script into the console
Copy the following JavaScript snippet and paste it into the console prompt. Press Enter to run it.let statusText = document.querySelector('.compose-form__autosuggest-wrapper textarea')?.value;
if (!statusText) { alert('No text found in the compose box.'); } else {
let scheduledTime = prompt('Enter UTC timestamp (ISO 8601 format, e.g., 2025-06-15T14:00:00.000Z):');
if (scheduledTime) {
fetch('/api/v1/statuses', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ status: statusText, scheduled_at: scheduledTime })
}).then(r => r.json()).then(d => {
if (d.id) { alert('Scheduled! Post ID: ' + d.id); } else { alert('Error: ' + JSON.stringify(d)); }
});
}
} - Enter the scheduled time in UTC
A prompt box appears. Type your target UTC timestamp in ISO 8601 format. Example:2025-06-15T14:00:00.000Z. Click OK. - Confirm the post was scheduled
An alert box displays “Scheduled! Post ID: …” if successful. If you see an error, check the timestamp format and ensure the time is at least five minutes in the future. - Verify the scheduled post in Mastodon
Open your profile page and look for the post. It will not appear immediately. You can also check the API by visitinghttps://yourinstance.social/api/v1/scheduled_statusesin a new tab while logged in. This endpoint lists all scheduled posts.
Common Issues and Limitations When Scheduling Posts
The scheduling script returns an authentication error
This error occurs when your browser session token has expired or you are not logged into the same instance. Refresh the page, log in again, and retry the script. The script uses the existing session cookie. If you use a private browsing window, the token may be shorter-lived.
The post publishes at the wrong time
Mastodon scheduling uses UTC. If you enter your local time without converting to UTC, the post publishes at a different time. Use a UTC converter tool before entering the timestamp. The ISO 8601 format must end with Z to indicate UTC. If you omit Z, Mastodon may reject the request.
Attachments and polls are not supported
The script shown above only sends the status text. It does not include media attachments, polls, or content warnings. To include these, you would need to modify the JSON body to include media_ids, poll, or spoiler_text parameters. This requires more advanced JavaScript knowledge. For now, use this method for text-only posts.
Scheduled posts cannot be edited or deleted from the web client
Once a post is scheduled, the Mastodon web client does not display it in your drafts or scheduled posts UI. To cancel a scheduled post, you must use the API. Send a DELETE request to /api/v1/scheduled_statuses/{id} where {id} is the post ID from the scheduling confirmation. You can also use the same console method with a fetch DELETE call.
Browser Developer Tools Script vs Third-Party Scheduling Tools
| Item | Browser Developer Tools Script | Third-Party Tools (Buffer, Hootsuite) |
|---|---|---|
| Cost | Free | Free tier limited; paid plans for multiple accounts |
| Setup time | Less than one minute | Requires account creation and OAuth authorization |
| Attachments support | Not included in the basic script | Yes, with image and video uploads |
| Poll support | Not included | Depends on the tool; some support polls |
| Scheduled post visibility | Not visible in the web client UI | Visible in the tool’s dashboard |
| Multiple account support | One account per browser session | Yes, manage multiple Mastodon accounts |
| Reliability | Depends on browser session and internet connection | Server-side scheduling, more reliable |
You now have a free method to schedule Mastodon posts directly from the official web client using browser developer tools. This approach works for text-only posts and requires converting your local time to UTC. For advanced scheduling with attachments or polls, consider a third-party tool. To view your scheduled posts, bookmark the /api/v1/scheduled_statuses endpoint for your instance. As a next step, test the script with a post scheduled five minutes in the future to confirm the process works on your instance.