Volt
00000000

Complete list · 119 languages · 219 character sets

Every file Volt opens

Volt is a macOS text editor that opens files larger than the memory in the machine. This page is the whole list: 119 programming languages by extension, 433 recognised file extensions, 219 character sets including 62 EBCDIC code pages, nine kinds of line ending, and the mainframe record formats that have no line endings at all. If your file is here, it opens.

Languages, by extension

119 languages, each one a table of keywords, comments, string delimiters, indentation rules, folding and outline rather than a lexer of its own — which is why you can add one yourself as a plain .voltmode file, or replace a built-in one by giving it the same id.

Everyday languages

  • Swift.swift
  • C / C++ / Objective-C.c.h.cc.cpp.cxx.hpp.hh.m.mm.inl.ino.cu.cuh.ipp.tpp.ixx.cppm
  • JavaScript / TypeScript.js.jsx.ts.tsx.mjs.cjs.mts.cts.es6.qs
  • Python.py.pyw.pyi.bzl.star.gyp
  • Rust.rs
  • Go.go
  • Kotlin.kt.kts
  • C#.cs
  • PHP
  • Ruby.rb.rake.gemspec.podspec.ru
  • Perl.pl.pm.t.pod
  • Lua.lua.luau.rockspec
  • Erlang.erl.hrl.escript
  • Nim.nim.nims.nimble
  • Shell.sh.bash.zsh.ksh.csh.tcsh.fish.command.zsh-theme.bats.ebuild.eclass
  • SQL.sql.ddl.dml.mysql.hql.cql
  • SCSS / Sass.scss.sass
  • Less.less
  • CSS.css.pcss.postcss
  • HTML / XML.html.htm.xml.xhtml.svg.vue.svelte.astro.plist.xib.storyboard.xsl.xslt.xsd.rss.atom.entitlements.stringsdict.xcprivacy.xcscheme.xcworkspacedata.csproj.vbproj.fsproj.props.targets.resx.xaml.wsdl.nuspec.xlf.xliff.sdef.gpx.kml.opml.rdf.musicxml.dae.tmx.xmi
  • JSON.json.jsonc.json5.geojson.volttheme.voltmode.jsonl.ndjson.ipynb.har.webmanifest.topojson.avsc.jsonld.babelrc.eslintrc
  • YAML.yml.yaml
  • TOML / INI.toml.ini.cfg.conf.properties.service.timer.socket.mount.automount.target.path.slice.swap.network.netdev.link.desktop.inf.reg.npmrc
  • LaTeX.tex.sty.cls.dtx.ins.ltx

Less common languages

  • Zig.zig.zon
  • Nix.nix
  • Julia.jl
  • Elixir.ex.exs
  • Haskell.hs.lhs.hsc
  • OCaml.ml.mli.mll.mly
  • Lisp / Clojure / Scheme.lisp.lsp.cl.el.clj.cljs.cljc.edn.scm.ss.rkt.fnl
  • Ada.adb.ads.ada
  • Fortran.f90.f95.f03.f08.f.for.f77
  • Tcl.tcl.tk.itcl.exp
  • R.r.rdata.rds.rmd
  • PowerShell.ps1.psm1.psd1
  • Assembly.asm.s.nasm.inc
  • Forth.fth.4th.frt
  • Smalltalk.st.cs.st
  • Vim Script.vim.vimrc
  • Elm.elm
  • Solidity.sol
  • ActionScript.as.asc
  • Wren.wren
  • SQL (Microsoft).tsql.mssql
  • SQL (PostgreSQL).pgsql.psql.plpgsql

The languages people are paid to write

  • ABAP.abap
  • COBOL.cob.cbl.cpy.cobol
  • D.d.di
  • Dart.dart
  • Delphi / Object Pascal.pas.pp.dpr.lpr.dpk
  • Visual FoxPro.prg.spr.mpr.fxp
  • GameMaker Language.gml
  • MATLAB / Octave.matlab
  • SQL (Oracle PL/SQL).pls.plb.pks.pkb.plsql
  • Prolog.pro.prolog.plg
  • SAS.sas
  • Visual Basic / VBScript.vb.vbs.bas.frm.vba
  • VHDL.vhd.vhdl
  • X++.xpp

The mainframe, and Windows batch files

  • JCL.jcl.cntl.jobs
  • REXX.rexx.rex.exec.cmdrexx
  • PL/I.pli.pl1.plinc
  • Batch (Windows).bat.cmd.btm

Build, hardware and data description

  • Makefile.mk.mak.make.just
  • Dockerfile.dockerfile.containerfile
  • CMake.cmake
  • Verilog / SystemVerilog.v.vh.sv.svh.verilog
  • Terraform / HCL.tf.tfvars.hcl.nomad
  • GraphQL.graphql.gql
  • Protocol Buffers.proto
  • Scala.scala.sc.sbt
  • Groovy / Gradle.groovy.gvy.gradle
  • CoffeeScript.coffee.litcoffee
  • AWK.awk.gawk.mawk
  • CSV / TSV.csv.tsv.psv.tab

What the Mac runs itself

  • AppleScript.applescript
  • JavaScript for Automation (JXA).jxa
  • Crystal.cr
  • F#.fs.fsi.fsx.fsscript

Templates — markup with a second language inside it

  • ERB (Ruby in HTML).erb.rhtml.html.erb
  • EEx (Elixir in HTML).eex.heex.leex.html.eex.html.heex
  • EJS (JavaScript in HTML).ejs
  • PHP-HTML.php.phtml.php3.php4.php5
  • Jinja / Nunjucks.j2.jinja.jinja2.njk.nunjucks
  • Twig.twig
  • Liquid.liquid
  • Handlebars / Mustache.hbs.handlebars.mustache
  • Go Template.tmpl.gotmpl.gohtml

Logs, the Mac developer's files, and servers

  • Log File.log.out
  • Strings (Apple).strings
  • Xcode Build Settings.xcconfig
  • Xcode Project (Property List).pbxproj
  • Shaders (GLSL, HLSL, Metal, WGSL).glsl.vert.frag.geom.tesc.tese.comp.hlsl.hlsli.fx.fxh.metal.wgsl.shader.cginc
  • Apache Configuration.htaccess
  • nginx / Caddyfile.nginx.nginxconf
  • Ignore / Attributes File.gitignore
  • crontab.cron.crontab
  • SSH Configuration.sshconfig

IBM i and the mainframe

  • RPG / RPGLE.rpg.rpgle.sqlrpgle.rpgleinc.rpginc.sqlrpg.rpg38
  • CL (IBM i).clle.clp.clp38.cl400
  • HLASM (IBM Assembler).hlasm.mlc.asmmac.mac.bal.assemble
  • EDI (X12, EDIFACT).edi.x12.edifact

Documents, diagrams, schemas and machines

  • reStructuredText.rst
  • AsciiDoc.adoc.asciidoc
  • Org.org
  • Typst.typ
  • BibTeX.bib.bibtex
  • RTF.rtf
  • Graphviz (DOT).dot.gv
  • Mermaid.mmd.mermaid
  • PlantUML.puml.plantuml.pu.iuml
  • Thrift.thrift
  • Cap'n Proto.capnp
  • Avro IDL.avdl
  • Apex (Salesforce).apex.trigger.soql
  • G-code.gcode.gco.nc.ngc.cnc
  • Markdown.md.markdown.mdown.mdx.qmd.mkd
  • Diff / Patch.diff.patch

Files with no extension

Half the files worth opening have no extension to go on, so Volt reads them instead of guessing from the name.

  • A #! lineA script called deploy with no extension is what its first line says it is — sh, bash, zsh, python3, ruby, node, perl, osascript and a dozen more, found through /usr/bin/env too. An extension always wins: a .py file is Python whatever its first line claims.
  • Shell dotfiles by their whole name.zprofile, .zshrc, .zshenv, .zlogin, .bashrc, .bash_profile, .kshrc, .cshrc, .inputrc and the rest — all name and no extension.
  • .m, asked rather than guessedIt is Objective-C and it is MATLAB. One imports headers and declares interfaces; the other opens with a % comment or a function line. The file decides.
  • .js that is really JXAA .js file is JavaScript. One that imports Objective-C, fetches an application or names osascript in its shebang is JavaScript for Automation, because that is the only thing that tells them apart.
  • Project files.editorconfig and .gitattributes are read for their rules, not only coloured: indentation, final newline, trailing whitespace, character set and line ending.

Character sets

219 of them, every one read and written. The common ones are detected on opening and the status bar says which was chosen and on what evidence; the rest you pick from the menu — including the EBCDIC pages whose bytes are indistinguishable from Latin words, where a guess would be a coin toss. Picking one asks whether to re-read the bytes as that set or convert them to it.

The everyday ones

  • UTF-8
  • UTF-16 LE
  • UTF-16 BE
  • UTF-32 LE
  • UTF-32 BE
  • US-ASCII
  • ISO-8859-1 (Latin-1)
  • ISO-8859-2 (Latin-2)
  • ISO-8859-15 (Latin-9)
  • Windows-1250 (Central European)
  • Windows-1251 (Cyrillic)
  • Windows-1252 (Western)
  • Windows-1253 (Greek)
  • Windows-1254 (Turkish)
  • Windows-1257 (Baltic)
  • Mac OS Roman
  • KOI8-R
  • DOS CP437
  • DOS CP850
  • Shift-JIS
  • EUC-JP
  • ISO-2022-JP
  • GB18030 (Simplified Chinese)
  • Big5 (Traditional Chinese)
  • EUC-KR
  • EBCDIC (US)

ISO-8859

  • ISO-8859-3 (Latin-3, Maltese, Esperanto)
  • ISO-8859-4 (Latin-4, Baltic, Nordic)
  • ISO-8859-5 (Cyrillic)
  • ISO-8859-6 (Arabic)
  • ISO-8859-7 (Greek)
  • ISO-8859-8 (Hebrew)
  • ISO-8859-9 (Latin-5, Turkish)
  • ISO-8859-10 (Latin-6, Nordic)
  • ISO-8859-11 (Thai)
  • ISO-8859-13 (Latin-7, Baltic)
  • ISO-8859-14 (Latin-8, Celtic)
  • ISO-8859-16 (Latin-10, South-Eastern Europe)

Windows

  • Windows-1255 (Hebrew)
  • Windows-1256 (Arabic)
  • Windows-1258 (Vietnamese)

Chinese, Japanese and Korean

  • Windows-949 (Korean)
  • Windows-932 (Japanese)
  • Windows-936 (Simplified Chinese)
  • Windows-950 (Traditional Chinese)
  • GB 2312 (Simplified Chinese)
  • GBK (Simplified Chinese)
  • HZ-GB-2312 (Simplified Chinese)
  • Big5-HKSCS (Hong Kong)
  • EUC-TW (Traditional Chinese)
  • ISO-2022-CN (Chinese)
  • ISO-2022-CN-EXT (Chinese)
  • Shift-JIS-2004 (Japanese)
  • ISO-2022-JP-1 (Japanese)
  • ISO-2022-JP-2 (Japanese)
  • ISO-2022-KR (Korean)
  • Big5-E (Traditional Chinese)

DOS

  • DOS CP737 (Greek)
  • DOS CP775 (Baltic)
  • DOS CP851 (Greek)
  • DOS CP852 (Central European)
  • DOS CP855 (Cyrillic)
  • DOS CP857 (Turkish)
  • DOS CP860 (Portuguese)
  • DOS CP861 (Icelandic)
  • DOS CP862 (Hebrew)
  • DOS CP863 (Canadian French)
  • DOS CP864 (Arabic)
  • DOS CP865 (Nordic)
  • DOS CP866 (Russian)
  • DOS CP869 (Greek)
  • Windows-874 (Thai)
  • DOS CP720 (Arabic)
  • DOS CP808 (Russian, euro)
  • DOS CP848 (Ukrainian, euro)
  • DOS CP849 (Belarusian, euro)
  • DOS CP858 (Western, euro)
  • DOS CP872 (Cyrillic, euro)
  • DOS CP878 (Russian, KOI8-R)
  • DOS CP891 (Korean)
  • DOS CP897 (Japanese)
  • DOS CP903 (Simplified Chinese)
  • DOS CP904 (Traditional Chinese)
  • DOS CP921 (Baltic)
  • DOS CP922 (Estonian)
  • DOS CP1125 (Ukrainian)
  • DOS CP1131 (Belarusian)
  • Windows-1162 (Thai)
  • DOS CP770 (Baltic)
  • DOS CP771 (Lithuanian, KBL)
  • DOS CP772 (Lithuanian, Russian)
  • DOS CP773 (Latvian)
  • DOS CP774 (Lithuanian)

Classic Mac OS

  • Mac OS Central European
  • Mac OS Cyrillic
  • Mac OS Ukrainian
  • Mac OS Greek
  • Mac OS Turkish
  • Mac OS Hebrew
  • Mac OS Arabic
  • Mac OS Farsi
  • Mac OS Thai
  • Mac OS Romanian
  • Mac OS Icelandic
  • Mac OS Croatian
  • Mac OS Celtic
  • Mac OS Gaelic
  • Mac OS Devanagari
  • Mac OS Gurmukhi
  • Mac OS Gujarati
  • Mac OS Tibetan
  • Mac OS Inuit
  • Mac OS Symbol
  • Mac OS Dingbats
  • Mac OS Japanese
  • Mac OS Simplified Chinese
  • Mac OS Traditional Chinese
  • Mac OS Korean
  • Mac OS Mail (Western)
  • Mac OS Keyboard Symbols

Cyrillic

  • KOI8-U (Ukrainian)
  • KOI8-T (Tajik)
  • KOI8-C (Old Cyrillic)
  • PTCP154 (Kazakh Cyrillic)
  • KZ-1048 (Kazakh)
  • CWI-2 (Polish, legacy)
  • MIK (Bulgarian)
  • Amiga-1251 (Cyrillic)

South Asian

  • TIS-620 (Thai)
  • VISCII (Vietnamese)
  • ISCII (Devanagari)
  • TSCII (Tamil)
  • TCVN-5712 / VSCII-1 (Vietnamese)

Everything else

  • ARMSCII-8 (Armenian)
  • Georgian-PS
  • HP Roman-8
  • Atari ST (Western)
  • RISC OS (Latin-1)
  • NextStep (Western)
  • EBCDIC (Latin 1)

EBCDIC — Western Europe and the Americas

  • EBCDIC 037 (US, Canada)
  • EBCDIC 273 (Germany, Austria)
  • EBCDIC 274 (Belgium)
  • EBCDIC 275 (Brazil)
  • EBCDIC 277 (Denmark, Norway)
  • EBCDIC 278 (Finland, Sweden)
  • EBCDIC 280 (Italy)
  • EBCDIC 282 (Portugal)
  • EBCDIC 284 (Spain, Latin America)
  • EBCDIC 285 (United Kingdom)
  • EBCDIC 297 (France)
  • EBCDIC 500 (International)
  • EBCDIC 871 (Iceland)
  • EBCDIC 924 (Latin 9)
  • EBCDIC 1047 (Latin 1, Open Systems)

EBCDIC — The euro revisions

  • EBCDIC 1140 (US, Canada, euro)
  • EBCDIC 1141 (Germany, Austria, euro)
  • EBCDIC 1142 (Denmark, Norway, euro)
  • EBCDIC 1143 (Finland, Sweden, euro)
  • EBCDIC 1144 (Italy, euro)
  • EBCDIC 1145 (Spain, Latin America, euro)
  • EBCDIC 1146 (United Kingdom, euro)
  • EBCDIC 1147 (France, euro)
  • EBCDIC 1148 (International, euro)
  • EBCDIC 1149 (Iceland, euro)
  • EBCDIC 1153 (Central European, euro)
  • EBCDIC 1154 (Cyrillic multilingual, euro)
  • EBCDIC 1155 (Turkey, euro)
  • EBCDIC 1156 (Baltic multilingual, euro)
  • EBCDIC 1157 (Estonia, euro)
  • EBCDIC 1158 (Ukraine, euro)
  • EBCDIC 1160 (Thailand, euro)
  • EBCDIC 1164 (Vietnam, euro)

EBCDIC — Central Europe

  • EBCDIC 870 (Central European)
  • EBCDIC 1112 (Baltic multilingual)
  • EBCDIC 1122 (Estonia)

EBCDIC — Cyrillic

  • EBCDIC 880 (Cyrillic)
  • EBCDIC 1025 (Cyrillic multilingual)
  • EBCDIC 1123 (Ukraine)
  • EBCDIC 1166 (Kazakhstan)

EBCDIC — Greek

  • EBCDIC 423 (Greece, superseded)
  • EBCDIC 875 (Greece)

EBCDIC — Turkish

  • EBCDIC 905 (Turkey, Latin 3)
  • EBCDIC 1026 (Turkey, Latin 5)
  • EBCDIC 1175 (Turkey, euro and lira)

EBCDIC — Middle East

  • EBCDIC 420 (Arabic)
  • EBCDIC 424 (Hebrew)
  • EBCDIC 425 (Arabic, Latin)
  • EBCDIC 803 (Hebrew, Character Set A)
  • EBCDIC 918 (Urdu)
  • EBCDIC 1097 (Farsi)

EBCDIC — Asia

  • EBCDIC 281 (Japan, Latin)
  • EBCDIC 290 (Japan, Katakana)
  • EBCDIC 1027 (Japan, Latin extended)
  • EBCDIC 838 (Thailand)
  • EBCDIC 1130 (Vietnam)
  • EBCDIC 1132 (Laos)
  • EBCDIC 1137 (Devanagari)

EBCDIC — Japanese, single- and double-byte

  • EBCDIC 930 (Japanese Katakana-Kanji)
  • EBCDIC 939 (Japanese Latin-Kanji)
  • EBCDIC 1390 (Japanese Katakana-Kanji, JIS X 0213)
  • EBCDIC 1399 (Japanese Latin-Kanji, JIS X 0213)

Six-bit codes, and library records

  • IBM 1401 BCD
  • IBM 704 BCD
  • IBM 7090/7094 BCD
  • BCDIC-A (IBM code page 353)
  • BCDIC-B (IBM code page 354)
  • GBCD (GE, Honeywell, Bull)
  • Burroughs B5500 BCD
  • CDC 1604 BCD (magnetic tape)
  • CDC Display Code
  • CDC Display Code (63 characters)
  • UNIVAC Fieldata
  • IBM Six-Bit Transcode
  • DEC SIXBIT
  • ECMA-1 (ISO 646 six-bit)
  • ICL 1900 six-bit
  • GOST 10859 six-bit
  • MARC-8 (Library Records)

Line endings

Nine kinds, detected per file, converted on request, and left alone otherwise.

  • LFU+000AUnix, and everything since
  • CRLFU+000D U+000AWindows
  • CRU+000DClassic Mac, and files that came off one
  • NELU+0085IBM mainframes and EBCDIC — a line ending in every Unicode sense
  • LSU+2028Unicode's own line separator
  • PSU+2029Unicode's paragraph separator
  • VTU+000BVertical tab, used as a break by older word processors
  • FFU+000CForm feed — a page break, and left alone when that is what it means
  • LFCRU+000A U+000DReversed, from equipment that did it the other way round

Records, and files that are not text

  • IBM RDWVariable-length records with a four-byte descriptor. The descriptors become line breaks when the file opens, and go back when it is saved.
  • Fixed-width records80-column punch-card images and 132-column print files, with nothing between the records at all. The padding goes back to the card it came from.
  • Files with no line breaksA file with no 0x0A in it is not one line several megabytes long unless that is what it is.
  • Anything elseEvery file can be read as a hex dump: offsets, bytes and the printable column, on the bytes as they sit on disk.

Guides that go further

EBCDIC on macOS — all 62 code pages, the NEL line ending, and converting to UTF-8 and back. Mainframe files on a Mac — RDW records, fixed-width extracts and COBOL copybooks. Opening large files on a Mac — what the tools already on the machine can do, and where they stop.

Questions about formats

What if the format I need is not on this list?

Search for it in the box above. When nothing matches, the page asks for your address and the name of the format, and that request goes straight onto the list of what to build next. A format people ask for is a format that gets added.

Can I add a language myself?

Yes. A language is a .voltmode file — keywords, comments, string delimiters, indentation rules, folding and outline — dropped into a folder. Give it the id of a built-in language and it replaces that one, which is how you add a keyword without waiting for a release. There is no plugin system to install and nothing to sign.

Can Volt convert between character sets?

Yes. Any of the 219 can be read and any of them written, including all 62 EBCDIC code pages. Opening reports which set was chosen and on what evidence; choosing a different one asks whether to re-read the bytes as that set or convert them to it.

What happens to a file that is not text at all?

It opens as a hex dump: offsets, bytes and the printable column, on the bytes as they sit on disk. Nothing is guessed and nothing is rewritten.

Which format do you need?

If it is not on this list, it is not built yet — and this is how it gets built. Name it, and we will write to you when it opens. No newsletter, no waiting on a form somewhere else.

Your address is used to answer this one request and to invite you to the beta. Nothing else. How we handle it.

Or join the beta without naming a format — the question after the sign-up asks the same thing.