Skip to the main text

Formats

Every format, and what you actually see

104 file extensions. Each row says what Foretaste puts on the screen and where it stops, because "supported" on its own is not a useful word.

This table is generated at build time from the extension's own detection table and its licence rules. It cannot say Foretaste opens something the code does not.

01

Documents

Format Opens What you see
PDF .pdf

The document, in your browser’s own PDF viewer — plus two things it cannot do: read the text out, and draw every page as a contact sheet so you can find the one you want.

Whatever your browser does. You cannot fill in a form or annotate a page here. Reading the text covers the first 20 pages a press: pages that carry text are read exactly, pages that are scans are recognised, and you are told which were which. A scanned page compressed as JPEG 2000 or JBIG2 draws too — those decoders are carried in the package rather than fetched.

Word document .docx

A reading view of the text, with headings, lists, tables and images.

It is the content, not the page layout. No pagination, headers or footers. The old .doc format is named but not opened.

OpenDocument text .odt .ott

The same reading view a Word document gets: text, headings, lists, tables and images.

Content, not layout. No styles, fonts, column widths, pagination, headers or footers are read.

PowerPoint .pptx

The slides themselves, one at a time, with the text and the speaker notes underneath.

A likeness, not a copy. Positions, pictures, shapes and text come from the file; theme colours, effects and animation do not, and a chart appears as its labels. The old .ppt format is not opened.

OpenDocument presentation .odp .otp

Each slide’s text in order, one slide at a time, with the slide’s own name.

Text, not a drawing — unlike PowerPoint, which is placed from its own co-ordinates. Layouts, colours, shapes and animation are not read.

02

Spreadsheets and tables

Format Opens What you see
Excel workbook .xlsx .xls

Every sheet as a tab, with the real cell values in a scrollable grid.

Values only. No charts, pivot tables, conditional formatting, and formulas are not recalculated.

OpenDocument spreadsheet .ods .ots

Every sheet as a tab, showing each cell as the author formatted it to appear.

Values only, and nothing is recalculated. No charts, and no styles.

CSV and TSV .csv .tsv

The same grid, with the delimiter and text encoding worked out for you — and a file of any size turns page by page, 200 rows at a time.

Paging costs one range request a page, so row 900,000 costs what row 1 costs. Finding where the pages begin reads the file once, because a CSV keeps no index. A malformed quote can shift a row.

03

Archives

Format Opens What you see
ZIP archive .zip

Every file inside, as a folder tree with sizes, read from the archive’s index over byte ranges. You can open one file from inside it, or save just that file.

5,000 entries are listed, and it says when there are more. Archives inside archives go three levels deep.

TAR and GZIP .tar .gz .tgz

The contents, listed and openable, the same way as a ZIP.

These formats have no index, so the whole file is read — but none of it is held: it streams past and only the listing is kept. One file out of a plain .tar comes back in a single range request.

7z and RAR .7z .rar .bz2 .tbz2 .tbz .xz .txz .lzma .zst .cab .iso .cpio .ar .lzh

The contents listed, and a single file extracted from inside.

Read whole, like TAR. An encrypted RAR lists but will not extract. 7z has never been tested against a real archive, because nothing here can write one.

04

Text, code and data

Format Opens What you see
Text, data and code .txt .log .md .markdown .json .jsonl .ndjson .xml .yaml .yml .ini .conf .cfg .env .sql .js .ts .jsx .tsx .css .scss .html .htm .py .java .c .cpp .h .hpp .sh .bash .ps1 .rs .go .php .rb

The file with syntax highlighting. Markdown renders, with a switch back to the source. JSON opens as a tree you can collapse. Show only the lines containing a word, and — on a log — only the levels you want, from a row of buttons carrying the count of each: INFO 312, WARN 12, ERROR 4.

The first 5,000,000 bytes and 20,000 lines, and it says when it stopped. The level buttons appear only on something shaped like a log, and read the first level word on each line, so an info line reporting a retry after an error stays an info line. Highlighting is not validation, and a .env file is shown as written.

SQLite databases .sqlite .sqlite3 .db

Every table, its columns and its CREATE statement, out of the first 256 KB — the schema of a 500 MB database without downloading it.

Counting rows exactly walks every table, so it is a button rather than something that happens to you. No SQL engine is shipped, so nothing can be queried.

Parquet datasets .parquet

Row count, row groups, and every column with its type — read from the footer.

Schema only. No data page is ever read.

05

Pictures and media

Format Opens What you see
Images .jpg .jpeg .png .gif .webp .avif .bmp .ico .svg .heic .heif

The picture, plus its dimensions, size, type and whether it has transparency. A JPEG’s Exif is read too — camera, lens, when it was taken, exposure. “Read the text” recognises any words in it, on your machine. HEIC photos are converted on your own machine and can be saved as JPG.

An SVG is drawn with scripting switched off, because an SVG can carry code. HEIC has not been tested against a real camera file.

Audio .mp3 .wav .m4a .ogg .flac

A player, streaming from the site it is already on.

Your browser decides which codecs play. There is no waveform.

Video .mp4 .webm .mov .m4v

A player. Only the part you actually watch is fetched.

Your browser decides which codecs play. An unusual one may not.

06

Books, fonts and subtitles

Format Opens What you see
EPUB books .epub

A contents list and one chapter at a time, with the images in place.

Images are capped at 40 per book and 8 MB. No reading position is remembered. A link from one part of a book to another is shown but cannot be followed — the chapters are entries in a file rather than pages at an address — so Contents is the way between them. A link to a website opens in a new tab.

Fonts .ttf .otf .woff .woff2

A specimen in the actual typeface, a glyph grid, and the family name and licence.

The name and licence are read for TTF and OTF. A WOFF2 renders but stays anonymous, because its tables are Brotli-compressed.

Subtitles .srt .vtt .ass .ssa

The timed lines, in order.

ASS and SSA styling is stripped rather than reproduced.

07

Calendars and contacts

Format Opens What you see
Calendar invitations .ics .ifb

Every event in the file: what it is, when it is in your own time zone, where, who organised it and who else was asked.

A repeating event shows the rule it repeats by, not an expanded list of dates. An all-day date is never shifted into a time zone.

Contact cards .vcf .vcard

Name, organisation, phone numbers, emails, addresses and notes, each keeping the label the card gave it.

A photograph embedded in the card is not drawn.

08

Recognised, and deliberately not opened

Foretaste identifies these from their contents so it can tell you what the file really is, rather than shrugging at it. It will name the format and suggest what to do instead, and saving to disk still works:

  • The old binary Office formats — .doc, .xls and .ppt

Raw disc images (.img) and Avro files are not recognised at all. Foretaste will tell you it cannot open the file, without being able to say what it is. An .iso is opened — it is listed like any other archive.

09

How Foretaste works out what a file is

Not from the file name. Real download links look like download?id=18392, and servers mislabel files constantly. Foretaste reads four signals and trusts them in this order:

  1. The file's own leading bytes. One kilobyte is fetched and checked against the signatures formats begin with. Bytes do not lie the way names do.
  2. The Content-Type header, when the server sends a specific one. application/octet-stream counts as no answer.
  3. The filename in Content-Disposition, which is where the real name usually lives.
  4. The extension in the address, last, because it is the weakest of the four.

One deliberate exception: a container several formats share yields to the filename. A .docx genuinely is a ZIP, and telling you so would be true and useless.

A ZIP gets special treatment beyond detection — see how a ZIP is listed without downloading it, and where those requests go (to the file's own website, and nowhere else).