Last updated: 4th August, 2026
Privacy policy
TL;DR: We value your privacy and do not store more than the bot actually needs to function. Saved data gets purged regularly.
Your information is never sold, and we never share it with third parties for their own purposes. We do use a small number of service providers who process data on our behalf under a data processing agreement (see section 4). Your data is not used to train AI models.

1. Introduction
At Jstmemit (or "bot" / "our bot" / "we") we genuinely care about your privacy. This policy explains how our website (https://jstmemit.com) and the bot handle your data.

2. No collecting data by default
Here's the important part: our bot doesn't collect any messages or GIFs when you first add it to your server. And the website does not use cookies or capture session replays during your visits. It's completely privacy-friendly out of the box.
Jstmemit only starts collecting them when someone with the "Manage Server" or "Manage Channels" permission explicitly turns the bot on for a specific text channel.
However, if Jstmemit is added to "My Apps" (or in other words, user-installed) then it will not save any messages, profile pictures or GIFs. It still receives what you give it: the message you right-click on, the text and images you put into /custom or /voice. That content is only held in memory (RAM) while the meme or voice message is being made and is never written to disk. Analytics events for these actions are still sent as described in section 4.

3. What we collect and why
When a channel is enabled using /enable command:
channelId, addedAt, enabled
Channel ID is used to read any channel specific settings from /settings command. The date when channel was enabled is used for analytics purposes.
When a setting was changed using /settings command:
frequency, useAvatarsInMemes, turbo, milestones
They are used to change the bot's behaviour based on set settings. For example, if a server owner disables usage of avatars in memes, then this will be saved so that bot can enforce it.
Each message in the enabled channel:
messageId, channelId, content, timestamp
They are used as text content when applied to meme templates. Timestamp is used to find and delete saved information after 30 days.
Links to images, avatars and GIFs that appear in the enabled channel:
messageId, channelId, imageUrl, source, timestamp, expiresAt
They are used on meme templates. Only the link to the file is saved. Content of those links is fetched and temporarily stored in RAM when used in a meme generation, but it never ends up on the actual hard drive.
When a voice message is sent:
messageId, channelId, content, timestamp
Their transcription is used as text content when applied to meme templates. Speech-to-text happens using a local Whisper model (see chapter 4)
When a voice message is generated from text:
channelId, voice, createdAt
They are used to understand which voices are used for text-to-speech the most. Information about used voices also appears in milestone messages.
Each time a meme is generated:
channelId, templateName, createdAt
They are used to count how many times a meme template was picked by the bot in a particular channel.
When a meme is liked or disliked:
scope (global / channel / user), scopeId, templateName, successes, failures, updatedAt
They are used to help the bot learn which meme templates work well globally, in a specific channel and for a specific user.
When feedback is sent using /feedback command:
userId, channelId, guildId, message, createdAt
Your message is sent to our team so that they can work on the issue or suggestion that you provided. The user ID is kept so that we can reach back to you for more information if needed. Channel and Guild IDs are used for context about bot's usage in a particular guild/channel, for example, to understand what have caused the mentioned in the message issue.

4. Analytics and service providers
We use PostHog EU for analytics and OpenTelemetry logs on this website and inside the bot. In addition to that, we use Cloudflare for the website's CDN, DNS and image delivery.
The bot sends an analytics event when a user directly interacts with the bot, for example:
- it is added to or removed from a server
- a channel is enabled or disabled
- settings are opened or changed
- a meme is generated
- a meme is rated
- a voice message is generated with /voice
- feedback is sent with /feedback
- data deletion is done via the /settings command
The bot emits an OpenTelemetry event when something goes wrong, for example:
- a meme generation has failed
- there was not enough context for a meme
- a meme template was not found
- an interaction has failed without a known reason
- a ratings (like/dislike) action has failed
Message content, narrated voice text and other personal information such as channel or server names is never sent to analytics or OpenTelemetry logs, and neither are the generated memes themselves.
Properties of sent events include the Discord user ID of the person who performed the action, the server and channel IDs, your Discord language, together with technical details like the setting values that changed, which meme template and voice were picked, how long meme generation took, error messages and stack traces.
In addition to this information most of these events include Discord's interaction ID, which is also shown to you if an error occurs. It's used to trace and investigate any errors that happen.
Analytics events are used to understand which features are used and how the bot performs, mostly in happy flows: a meme generated was generated, a channel has enabled Jstmemit, a meme was liked.
Logs are used to understand how errors happen, mostly in unhappy flows: meme generation failed, bot didn't respond to a command.
4.1 Voice processing
Currently Jstmemit doesn't use any external service providers for Speech-To-Text and Text-To-Speech functionality. We host our own instances of these models:
- Whisper - used for transcribing voice messages to use their content as text on generated memes
- Kokoro 82M - used for generating voice messages via /voice command
If we ever decide to use such provider in the future for improving generated voice messages quality or other reasons, it would be made opt-in only and local options would stay selected by default to all users to respect their privacy.

5. How long we keep your data
Saved data is purged automatically on a fixed schedule. However, some of it may still be cached for up to 24 hours after it's removal.
Messages - deleted after 30 days.
Links to images - deleted after 24 hours.
Links to (server) avatars - deleted after 30 days.
Links to custom emoji's and stickers - deleted after 30 days.
Links to GIFs (Tenor or GIPHY) - deleted after 90 days.
OpenTelemetry logs - deleted after 14 days.
Analytics events - deleted after 1 year.
Ratings - deleted after 1 year.

6. Where your data is stored
All data received by the bot is stored within the European Union.

7. Deleting your data
If you are a server owner or have "Manage Server" / "Manage Channels" permissions, you can use the /settings command to delete all message data the bot has saved for a channel.
However, it's also possible to disable a channel via /enable. This stops the bot from saving anything new. Saved data is not wiped instantly, but the purge schedule keeps running, so remaining messages disappear within 30 days at the latest (image links within 24 hours, GIF links within 90 days).
Kicking the bot from your server also stops all collection. Stored data continues to expire on the schedules described in section 5.
You can also email [email protected] and we will delete data relating to you manually, including analytics events and ratings.
If email is inconvenient, you can reach us the same way you use the bot: with the /feedback command or on our Support server. Requests sent using these options are handled the same. Email is still the better option if you want a written reply, or if you no longer have access to the Discord account the data belongs to. You don't have to include anything else, simple "Please delete my data" is enough. When emailing, including your Discord user ID helps us find the right data faster.

8. Legal basis for processing
We process data for these purposes:
Generating memes - is done under the basis of legitimate interest in operating the bot, and only after a server owner or administrator invites it and explicitly runs /enable command. After which members are notified with a "Jstmemit is now active and will generate memes during chats here" disclaimer. No message data is collected before that.
Because we rely on legitimate interest, we have weighed our interest in operating Jstmemit against your privacy. The bot is essentially designed to be blind by not collecting identifiers of who sent what message. In addition to that, collected content is stored for a short period of time (see section 5). You can object to this processing at any time (see section 10).
Analytics and logs - we have a legitimate interest in understanding how the bot is used, which templates are doing well, tracking errors and how we can keep it working.

9. Who we are
Jstmemit is operated by Wide Units, registered in the Netherlands with the Dutch Chamber of Commerce (KVK) under number 97552887.
General questions: [email protected]
Privacy and GDPR requests: [email protected]

10. Your rights
Under the GDPR you have the right to access the data we hold about you, to have it corrected or deleted, to restrict or object to its processing, and to receive a copy of it in a portable format.
To exercise any of these rights, email [email protected]. We will try our best to respond as fast as possible, but depending on the request it can take up to a month.
If you believe we are handling your data unlawfully, you also have the right to lodge a complaint with the Dutch Data Protection Authority (Autoriteit Persoonsgegevens) or the authority in your own EU country.

11. Changes to this policy
There can be changes to this policy in the future. "Last updated" date at the top of this page shows the current version. Significant changes will be announced on our Support server before they take effect.
