Tweet to image.
Keep the words. Give them room.
Turn a public X post into a clean image. Keep its author and source. Choose a design that stays readable wherever you share it.
Paste a post link, choose a design, save the image.
Post Studio is in your dock. Everything you started is still there.
Give the words some room.
Import a public post. Keep its author, choose a design and save a clean image.
Source, text and import notes
Paste this description into the destination’s image alt text. Review it before posting.
Only design settings are remembered. Imported posts stay in this tab.Only design settings save privately. Imported posts and images do not.Saving details
How to turn a tweet into an image
Paste the post link
Copy the link to a public X or Twitter post. Paste one URL, or up to six on separate lines, and choose Import posts.
Design it without changing the words
Pick a treatment and background. Choose a canvas size. Check the original text, media and context in Source, text and import notes.
Save an image you can read
Check the export dimensions and phone-size text estimate. Save PNG, JPG or WebP, or copy PNG. A batch can arrive as one ZIP.
Using Post Studio
Import an existing post, then style the image around it. You cannot edit the imported wording, name or handle.
Import one URL or a small batch
Import post reads the URL in Start with a post link. Choose Import a batch to open space for up to six links. Each non-empty line must be a public post link.
| Control or input | What happens |
|---|---|
| Start with a post link | Accepts HTTPS links from x.com, twitter.com and their www or mobile variants. Share parameters and photo/video suffixes are removed before retrieval. |
| Import post / Import posts | Imports up to six distinct post IDs. Duplicate links count once. A new successful run replaces the current set. Failed links are named by their line number. |
| Cancel import | Stops the browser’s pending import request. The previous composition stays available. A server request already received may finish upstream. |
| Try a public post | Refreshes the public example from @parish_khan, post 2112165849088004370. The page starts with a bundled copy of that post, so the preview is ready without an import request. The button retrieves the latest available version from X. |
| Import a batch / One post instead | Expands or compacts the link field. Paste one URL per line. Shift+Enter inserts a new line; Enter imports the set. |
| Post tabs and × | Choose the post to preview or remove it from the current set. The same design applies to every remaining post. |
| Clear | Releases imported posts and images from the studio. Your design settings remain. It does not delete the original on X. |
A batch can partly succeed. The status line identifies failed imports, while the successful posts become the new set. If every link fails, the previous set stays.
The design settings scroll inside their own panel. The live preview stays beside them on a wide screen and above them on a narrow screen.
Choose a treatment and typeface
Paper, Midnight, Editorial and Outline change the card treatment. Editorial also selects Georgia. The other presets select Instrument Sans.
- Typeface chooses Instrument Sans, Space Grotesk or Georgia. The first two fonts are hosted by floi. Your device supplies Georgia.
- Text size sets body text between 18 and 36 design pixels. The final pixel size also depends on the canvas ratio and Export scale.
- Reset design restores the initial treatment, spacing, context and export settings. It keeps imported posts.
Set the background and spacing
Background offers five gradients, Clear, Soft grey and Custom colour. Named swatches are shortcuts to the same setting.
| Setting | Effect |
|---|---|
| Background colour | Appears for Custom colour. It fills the outer canvas, while the post keeps its treatment. |
| Card width | Sets the design width from 420 to 760 pixels. A narrower card wraps words into more lines. This does not resize the tool window. |
| Outer spacing | Adds 16 to 120 design pixels around the composition. Extra spacing can make text smaller inside a fixed canvas. |
| Corners | Rounds the card and its nested quote. It does not round or crop away the text. |
| Shadow | Changes the shadow strength beneath the card. Zero removes it. |
Keep enough context to be fair
Keep the context controls what surrounds the imported words. Author details remain visible in every treatment.
- Photos and video posters includes returned media. Photos fit without cropping. A video or GIF is labelled as a still poster.
- Quoted post includes a nested quoted card, when supplied. Parent post, if returned adds a parent above the main post.
- Date and time in UTC shows the returned publication time with an explicit timezone.
- Available engagement counts shows returned likes and replies. Missing counts are omitted. Views and repost counts are not invented.
- Source link below card prints the post address outside the card. It is visible text in an image, not a clickable link.
Open Source, text and import notes to compare the imported words with the original. It records the retrieval time and flags missing images or edited posts. A reply’s parent may be absent even when the import succeeds.
Choose export dimensions without clipping text
Fit entire post grows the canvas with the returned content. Fixed sizes fit the complete composition inside the chosen rectangle.
| Export control | Result |
|---|---|
| Canvas size | Fit entire post, square 1080 × 1080, portrait 1080 × 1350, vertical 1080 × 1920, landscape 1920 × 1080 or link preview 1200 × 630. These dimensions are at 1×. |
| Export scale | Multiplies both dimensions by 1, 2 or 3. A 1080 × 1350 canvas at 2× saves 2160 × 2700 pixels. More pixels do not enlarge text when the image is displayed at the same width. |
| File format | PNG avoids lossy encoding around letters. JPG and WebP use 94% encoding quality. Clear keeps transparency in PNG and WebP; JPG fills it with white. |
| Save PNG / JPG / WebP | Saves the selected composition. The button name follows File format. |
| Save all | Saves the current batch with one shared design. Choose one ZIP or separate files through the file bar’s save menu. |
| Copy PNG | Copies image pixels, regardless of File format. If browser clipboard permission is unavailable, save a file instead. |
The preview reports the exact saved dimensions and estimates body text at a 390-pixel display width. This is a geometry estimate, not an accessibility certification. A warning appears below 14 pixels. Prefer a taller canvas or separate images to tiny text.
Source description and the tool window
Copy description copies the visible post text, author, source and available media descriptions. Review it, then paste it into your destination’s image alt text.
- Open in sends your finished image to another floi tool. Use Screenshot Beautifier when you need arrows or annotation.
- Share offers the shared file options. Open in and Share use the same image as Save.
- Narrow, Wide or Full at the top right changes the tool window. Minimise keeps the current work on the desk. Reloading the page loses imported posts.
Keyboard controls
Form controls keep their normal keyboard behaviour. The file bar provides the shared save shortcut.
| Key | Action |
|---|---|
| Enter in the URL field | Import the current links. |
| Shift + Enter | Add another URL line. |
| Ctrl / ⌘ + S | Save the selected image through the file bar. |
| Escape | Leave focus mode through the shared window controls. |
What this tool will not do
It cannot recover deleted posts or bypass protected accounts. X’s public embed service can fail or return shortened text. A designed card is a reconstruction, not proof that the original was unchanged.
It does not capture the X interface, crawl whole threads, translate posts, invent metrics or export video. Images are limited to 3 MB each during import, with a 10 MB total budget per post. Exports stop above 32 megapixels or 8192 pixels per side.
Imported posts and public media are not saved to account state, browser storage or Supabase Storage by this tool. Only design settings are remembered. Save the image before closing the tab.
Frequently asked questions
Can I turn a tweet URL into an image without signing in?
Yes. Paste a public X or Twitter post link and choose Import posts. No floi or X account is required. Protected, deleted or restricted posts may be unavailable. An import needs an internet connection.
Does this capture the full text of a long X post?
It renders all the text returned by X’s public embed-data service, with no Show more button added by floi. That service may return less than the original Premium post. Open the original and compare the final sentence. A successful import does not guarantee complete text.
Can I include a quote tweet, a reply or a thread?
A quoted or parent post appears when X returns it. The corresponding checkboxes control whether it is included. The tool does not fetch a whole conversation automatically. Paste up to six explicit post URLs to make a set of separate images. Review the original thread for context.
What happens to photos, videos and GIFs?
Up to four returned media items are included. Photos are fitted without cropping. Videos and GIFs become labelled still posters, with no motion or sound. If an image cannot be retrieved, a placeholder remains visible. You can hide media with Photos and video posters.
Is there a watermark or a limit?
No watermark is added. You can import up to six URLs per run. Exports are limited to 32 megapixels and 8192 pixels per side. The import service applies a temporary request throttle, and X may impose its own limits. There is no account or payment gate.
Are post links and images saved to my account?
No. The post link goes to floi’s Supabase import service, which retrieves public data and images from X. The function does not write those posts or images to a database or Storage. They stay in this tab after retrieval. Only design settings use automatic account saving. Hosting providers may retain ordinary request logs.
Something missing? Request a feature