File format support matrix
Short answer: The AI creates and surgically edits Word, Excel, PowerPoint, SVG, and HTML in place; for PDFs it creates them, combines them, and deletes, rotates, or reorders their pages in place, while text-level changes go through the source file and a re-export. It can read and search dozens more formats, including code, plain text, and legacy Office files. Local semantic search indexes a narrower set (code, text/markup, and the five main Office formats) and deliberately skips
.envand.logfiles even though they’re readable.
Documents & text
| Format | AI reads it | AI creates it | AI edits it | Indexed for semantic search |
|---|---|---|---|---|
Markdown (.md) | Yes | Yes (create_text_file) | Yes (edit_file) | Yes |
Plain text & config (.txt, .json, .csv/.tsv, .yaml, .toml, .ini/.conf, .xml) | Yes | Yes (create_text_file) | Yes (edit_file) | Yes |
Code (~30 file extensions: .ts, .js, .py, .rs, .go, .java, .c/.cpp, .sh, .sql, .rb, .php, .swift, .kt, and more) | Yes | Yes (create_text_file) | Yes (edit_file) | Yes |
HTML / webpages (.html, .htm) | Yes | Yes (create_webpage) | Yes (edit_file) | Yes |
SVG (.svg) | Yes | Yes (create_svg, or trace_image from a raster image) | Yes (edit_file) | No |
Word (.docx) | Yes (read_docx_text) | Yes (create_doc, from Markdown) | Yes, surgically (edit_docx_paragraphs covers body text, headers and footers, and footnotes; preserves theme, styles, and media) | Yes |
Excel (.xlsx) | Yes (read_xlsx_sheets, read_xlsx_range, including formulas) | Yes (create_spreadsheet, from Markdown tables or CSV) | Yes, surgically (edit_xlsx_cells for values, insert_xlsx_rows for new styled rows, edit_xlsx_structure for sheets, row/column insert and delete, cell formatting, and column widths; preserves charts and formatting) | Yes |
Excel legacy & other (.xls, .xlsm, .xlsb, .ods) | View-only (in-app viewer); .xls also reachable via find_text | No | No | .xls only |
PowerPoint (.pptx) | Yes (read_pptx_text, read_pptx_structure) | Yes (create_presentation, 5 built-in themes) | Yes, surgically (edit_pptx_text for shape text, edit_pptx_table for table cells and rows/columns, set_slide_notes for speaker notes, and duplicate_slide / delete_slide / move_slide for deck structure) | Yes |
Yes (viewer + find_text) | Yes (create_pdf, from HTML; export_pdf from an existing Word/Excel/PowerPoint file) | Page-level, in place: edit_pdf_pages deletes, rotates, or reorders pages; merge_pdfs combines files; extract_pdf_pages pulls chosen pages into a new PDF. Text content isn’t edited directly: for a PDF you generated, edit the source file and re-export, which replaces the PDF at the same path | Yes (text layer) |
.docx/.xlsx/.xls/.pptx/.pdf content is only searched by find_text when you (or the model) pass include_office:true; it’s off by default. .env and .log files are readable and previewable like any text file, but deliberately excluded from the semantic-search index so secrets and tokens in them can’t surface in a search result.
Templates
.docx, .pptx, and .xlsx files that use {{name}} / {{name:type}} placeholders get a separate fill engine (fill_docx_template, fill_pptx_template, fill_xlsx_template) that populates them with data while preserving every formatting choice: fonts, themes, charts, conditional formatting, slide masters.
Media (images, audio, video)
| Format | What the AI can do |
|---|---|
Images (.png, .jpg, .gif, .webp, .bmp, .avif, .ico) | Views them in-app; generates new ones from a prompt (generate_image, OpenRouter), draws a street-map PNG with numbered pins from OpenStreetMap (create_map_image, no key needed), or traces an existing raster into an SVG (trace_image). No raster-editing tool. |
Audio (.mp3, .wav, .ogg, .flac, .aac, .m4a, .opus, and more) | Plays in-app; generates speech or music from a prompt (generate_speech, generate_music, OpenRouter); trims, joins, splits, extracts, and cleans up audio locally via a bundled FFmpeg; transcribes locally via Whisper. |
Video (.mp4, .webm, .mov, .mkv, .avi, .m4v) | Plays in-app; generates new video from text or a starting image (generate_video, OpenRouter); trims, joins, splits, reframes to vertical/square, and burns captions locally via FFmpeg; transcribes locally via Whisper. |
Media generation always runs through OpenRouter’s hosted models and needs an OpenRouter API key, though the chat itself can be on any provider. Media editing and transcription work the other way round: both run entirely on your machine, and nothing uploads anywhere. None of the media formats are indexed for semantic search; the index only covers text-extractable content.
Everything else the file viewer opens
A few format families sit outside the AI’s tools entirely: fonts (.ttf, .otf, .woff, .woff2) and archives (.zip, .tar, .gz, and similar) open in your OS’s default app when you launch them from the file tree, not inside Build Perch, and aren’t readable, editable, or indexed by AI tools. See The file viewer & supported formats for the full read-only viewer picture (75+ file types, including everything in the tables above).