---
title: fansub meta-guide
keywords: [Aegisub, fansubbing, guide, subtitling, dialogue editing, links, timing, typesetting, unanimated, guide index, karaoke effects, kfx, fansubs, fansub, howto]
lang: en-GB
toc: true
---

<div class=bigwarn>**not maintained very much any more**</div>

~~alternative title: awesome-fansubbing~~

This isn't actually a guide, just a bunch of links to other peoples' guides for specific things.
If you follow them, you should end up with some at least semi-decent subs.

Mostly oriented towards anime, but should apply to most things (with some [notable][Typesetting] [exceptions][Karaoke Effects (KFX)]).

explanations of the different roles are taken from [guide.encode.moe](https://guide.encode.moe/overview/roles.html), and are licensed under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0). Some portions are omitted, but otherwise unchanged. [Aegisub Configuration] is nicked from [the GJM fansubbing page](https://www.goodjobmedia.com/fansubbing/).

also keep in mind that this is all just like, my opinion, man

For more resources, and to talk with actual people, join the [GJM discord server](https://discord.gg/hQewDqS) and give yourself the fansubber role.

## Setup

### Recommended Aegisub Builds

[3.4.0 is out](https://aegisub.org/downloads/)
but you will _probably_ still want to use [arch1t3cht's fork](https://github.com/arch1t3cht/Aegisub) for now, as it's still where the new shiny features are -- see [this github issue](https://github.com/arch1t3cht/Aegisub/issues/177) for details.

You can use other builds/versions if you want, but make sure to [configure them properly][Aegisub Configuration].

### Aegisub Configuration

Upon starting up Aegisub the first time, you should change the following settings:\
View > Options > Advanced > Video

-   Set **Subtitles Provider** to `libass`.
-   Untick **Force BT.601**. It is extremely important to make sure you work in the right colour space. (on [newer forks][Recommended Aegisub Builds], this is automatically disabled and no longer an option.)

Restart Aegisub for the changes to fully take effect. Note that script settings may override the colour space.

See [guide.encode.moe](https://guide.encode.moe/typesetting/aegisub.html) for why these settings are important.

### Help, something with the Video/Audio is broken!

```
[13:20]arch1t3cht: you need to install ffms2 from git, not from whatever your distro has
[13:20]arch1t3cht: for example ffms2-git from the aur if you're on arch
```

[ffms git repo](https://github.com/FFMS/ffms2).

Alternatively, you can use a different video source altogether. arch1t3cht's fork has a few, apparently everything should work out of the box now as long as you have python and vapoursynth installed.

## Translation

<span class=important>[8thSin Translations - Fan Translation Guide](https://web.archive.org/web/20141021201922/http://8ths.in/fantranslation-guide/)</span> [archive copy]

[TED translations: How to Tackle a Translation](https://web.archive.org/web/20240527160710/https://translations.ted.com/How_to_Tackle_a_Translation) [archive copy]

[TED translations: The translator's research toolbox](https://web.archive.org/web/20240412120047/https://translations.ted.com/The_translator's_research_toolbox) [archive copy]

[Translation theory overview](img/Translation+Theory.pdf) [PDF]

[An Open Letter on Translating (Martin Luther, 1530)](https://www.bible-researcher.com/luther01.html)

<span class=important>**[In Other Words - A Coursebook on Translation](https://www.google.com/books/edition/_/-2dNDwAAQBAJ)**</span> - ebook ISBN `978-1-3156-1918-7`

[Wikipedia: List of <span lang="ja-Latn-JP">gairaigo</span> and <span lang="ja-Latn-JP">wasei-eigo</span> terms](https://en.wikipedia.org/wiki/List_of_gairaigo_and_wasei-eigo_terms)

[sci.lang.japan FAQ: What are these pseudo-English words like salaryman?](https://www.sljfaq.org/afaq/wasei-eigo.html) (<span lang="ja-Latn-JP">wasei-eigo</span>)

[sci.lang.japan FAQ: What "false friends" are there between Japanese and English?](https://www.sljfaq.org/afaq/false-friends.html)


## Editing

> The Editor is responsible for making sure that the script reads well. Depending on the source of the script, this may mean grammatical corrections and some rewording to address recommendations from the Translation Checker. However, more often than not, the job will entail rewriting, rewording, and characterizing large portions of the script.

### the interesting bit

The [Translation] section is worth a read. the theory of it is still interesting and useful, even if you can't actually take the words from one language to another.

<span class="important">[**tun's Fansub Editing Guide**](https://web.archive.org/web/20221123192135/http://m33w-fansubs.com/editing-guide/)</span> [archive]

[Collectr's Curmudgeonly Guide to Editing](https://collectr.blogspot.com/2011/01/collectrs-curmudgeonly-guide-to-editing.html)

[motbob's editing guide](https://docs.google.com/document/d/1mlpW0F7ma2_GFyKKFeb-9W1sTlrb7ohVo-nRPderlaU/edit)

[Collectr on Editorial Minimalism](https://collectr.blogspot.com/2013/10/editorial-minimalism.html)


[Light/Kaleido's style guide](https://web.archive.org/web/20220710165918/https://lightarrowsexe.github.io/moon_blog/editing-stylesheet/) [wayback machine]

[editing style comparison meme](img/editing_style_comparison-mod.png) [large image]

### the boring bit

<span class="important">[TED Translations wiki: How to break lines](https://web.archive.org/web/20240421153405/https://translations.ted.com/How_to_break_lines)</span> [archive copy]

[BBC Subtitle Guidelines: Line breaks](https://www.bbc.co.uk/accessibility/forproducts/guides/subtitles/#Line-breaks)

fwiw, [UA's linebreaker script](https://github.com/TypesettingTools/unanimated-Aegisub-Scripts/blob/master/ua.LineBreaker.lua) seems to do what I would've done anyway ~70% of the time. You still have to do the other ~30% though.

```
[16:13] crng: personally i would suggest viewing the linebreak as a "soft split" of sorts
[16:14] crng: ideally you want either side of the break to make enough sense on its own that the reader won't get a completely wrong idea from the pause as they shift to reading the second half
```


## Timing

> The Timer is responsible for when the text representing spoken dialogue shows up on screen.
> The timing of subtitles is much more important than one might assume. The entrance and exit times of the subtitles, or a fluid transition from one line to the next, can make a large impact on the "watchability" of the episode as a whole.

Read <span class="important">[WhyNot's guide](img/a-guide-to-timing-in-aegisubv2.pdf)</span> [PDF] for the basics, though probably ignore its TPP settings.

Then read [unanimated's timing guide](http://unanimated.github.io/timing-basics.htm) for the slightly-less-basics and better settings.

also [his guide on Timing without TPP](http://unanimated.github.io/timing-without-tpp.htm)

<span class="important">Use the spectrogram, not the waveform.</span>
The spectrogram lets you recognise speech just from its "shape" in the graph, which you can't do (as easily) with the waveform

TODO: example

also, very important point: you don't have to stick with the default hotkeys!!!!!

absolutely play around, try things out and see what you personally like

<!-- ### Don't trust the TPP

<span class="warn">Don't just blindly trust the timing post-processor</span>, it has no idea what's really going on. Do a pass through and fix any mistakes it may have made.

Eventually you should grow out of the TPP and start doing it manually with hotkeys etc

Alternatively, use [PhosCity's Timing Assistant script](https://github.com/PhosCity/Aegisub-Scripts/#timing-assistant). It's like the TPP, but it only runs one line at a time, and you can check and change its decisions as it makes them. This means that, in theory, you can get the entire thing done in one pass. -->

### Generating Keyframes

<span class="warn">**You should generate your own keyframes**, the ones in the video probably won't be very good, or just straight up wrong.</span>

#### Drag-n-drop (Windows)
There's a [nice batch script](img/kf-gen.7z) that comes with all the stuff you need.
You should be able to just drag your video onto it. Apparently you can also add it to the Send To menu.

#### Command-line incantation (Everywhere)

get [`ffmpeg`](https://ffmpeg.org/)

get [`scxvid-standalone`](https://github.com/soyokaze/SCXvid-standalone) - you'll need to compile it on not-windows, but this is reasonably straightforward

`ffmpeg -i vid.mkv -f yuv4mpegpipe -vf scale=640:360 -pix_fmt yuv420p -vsync drop - | scxvid vid_keyframes.log`

If it misses frames, try removing the `-vf scale=640:360` bit.

my script looks like this
```sh
#!/bin/sh
ffmpeg -hide_banner -i "$1" -f yuv4mpegpipe -pix_fmt yuv420p -vsync drop - | scxvid "$1.keyframes.txt"
notify-send -u low "Keyframes generated!" "$1"
```

#### Various VapourSynth Scripts (also everywhere but with more painful dependencies)

there's also [<span lang="ja-Latn-JP">myaa</span>'s keyframe script](https://gist.github.com/Myaamori/dfb0030fd4ee44364ca3b0c2c9c9b4aa). WWXD, the thing it uses to actually generate the keyframes, claims to be ~6× faster than scxvid.

<span lang="ja-Latn-JP">Setsugen no ao</span> also wrote one that exposes
If you want more control over your keyframes, use [this script by ](https://gist.github.com/Setsugennoao/0f8f031f24d1461fb96032270c0ae58c).

You'll need a working [VapourSynth](https://www.vapoursynth.com/) install for both of these.

### Karaoke Timing

[<span lang="hu-HU">Zahuczky</span>'s Karaoke Timing guide](https://zahuczky.com/aegisub-k-timing-guide/). The 0th part of a larger KFX guide.

It's also covered in [WhyNot's guide](img/a-guide-to-timing-in-aegisubv2.pdf) [PDF]

### Alpha Timing

ideally don't

but if you must, see [WhyNot's guide](img/a-guide-to-timing-in-aegisubv2.pdf) (again) for an idea of what it is and how it works.
then ignore it and use [my karaoke2alpha script](https://github.com/garret1317/aegisub-scripts/blob/master/karaoke2alpha.lua) instead. [K-Time][Karaoke Timing] the line and run the script, and it'll make some alpha-timed lines for you.

personally i like alpha timing for r-r-r-r-r-really exaggerated/over-the-top stutters but not much else

## Typesetting

> Typesetters (abbreviated TS) are responsible for the visual presentation of translated text on-screen. These are generally called signs.
> Almost every sign the Typesetter works on will be unique, requiring ingenuity, a wild imagination, a sense of style, and a high degree of attention to detail. The Typesetter’s goal is to produce something that integrates so well into the video that the viewer does not realize that it is actually part of the subtitles.
> Something to remember about typesetting is that there is no one way to typeset a sign. There are, however, incorrect ways that are not visually pleasing, do not match the original well, are difficult to read, or are too heavy (meaning computer resource intensive).

There's only one really good piece of documentation. Everything else is either word-of-mouth, or you have to figure it out on your own. I once again encourage joining [the GJM discord server](https://discord.gg/hQewDqS) and getting advice from real human beings.


[The ASS Tags and what they do](https://aegisub.org/docs/latest/ass_tags/)

<span class="important">[unanimated's typesetting guide](http://unanimated.github.io/ts/)</span>

[Fansubbing wiki: Typesetting FAQ](https://fansubbers.miraheze.org/wiki/Guide:Typesetting/Frequently_asked_questions#What_is_the_shad_trick?)

[>vertical text](https://www.youtube.com/watch?v=3QbOKa3CGTQ) [youtube]

### Escaping Aegisub (other vector editors)

<span class="important">[AI2ASS](https://github.com/TypesettingTools/AI2ASS)</span> - A script to export ASS vector objects from Adobe Illustrator. Very powerful, very addictive.

[Typesetting in Adobe Illustrator](https://typesettingtools.github.io/2014/08/25/typesetting-with-illustrator-and-ai2ass-part-1.html)

[Masking with Photoshop and Illustrator](https://guide.encode.moe/typesetting/masking/index.html)

[svg2ass](https://github.com/irrwahn/svg2ass) - Alternative to ai2ass. much worse, but works for anything that can output svg.
<!--[Online Gui]() TODO
[Aegisub Script]() [unstable?]-->

### Motion Tracking

<span class="important">[Aegisub-Motion](https://github.com/TypesettingTools/Aegisub-Motion)</span> - *The* motion tracking script.

[Aegisub-Perspective-Motion](https://github.com/Zahuczky/Aegisub-Scripts/) - A recent innovation that tracks perspective as well.

[Motion tracking with Mocha and Aegisub-Motion](https://github.com/TypesettingTools/Aegisub-Motion/wiki)

[PhosCity's blender tracking guide](https://fansubbers.miraheze.org/wiki/User:PhosCity/Blender_Motion_Tracking_for_Fansubbing)

[UA's mocha guide](http://unanimated.github.io/ts/ts-mocha.htm) [outdated?]

[Optimising Mocha](https://web.archive.org/web/20240918125308/https://shinon71.moe/blog/mocha_opt) [archive copy]


~~[how to meme](https://web.archive.org/web/20240918125308/https://shinon71.moe/blog/shitpostingbetter) [archive copy]~~
wayback machine didn't save the videos sadly

#### Choosing fonts

[UA's Typesetting Guide: Fonts](http://unanimated.github.io/ts/ts-fonts.htm)

There are lots of fonts that the studios use pinned in #typesetting in GJM.

You don't need to find the exact font the studio used.
Even if you do, the latin letters might not be nearly as stylised as the kanji.
As long as the font matches decently well, no one will care.

Or, alternatively, do something completely different. As long as it makes some sense for it to be there, you're probably ok.

At some point, it'll start making sense to use a font manager. I hear FontBase is good.

## Styling

i.e., what do your subtitles actually look like? Don't skip this bit, even if all your other typesetting is just `\an8`.

**[Underwater’s Styling ~~Guide~~ Rant](https://web.archive.org/web/20150708090306/http://underwater.nyaatorrents.org/?view=why-do-so-many-groups-fail-at-styling)** [wayback machine]

[Subtitle Appearance Analysis Part 1: The Font](https://www.md-subs.com/saa-subtitle-font)

[Subtitle Appearance Analysis Part 2: Font Size](https://www.md-subs.com/saa-subtitle-font-size)

[Subtitle is important - Austin Powers](https://www.youtube.com/watch?v=rQFfMyxa04A) [youtube]

[Nice chart of dialogue fonts](img/dialogue-fonts.png)

Remember, ![white text with a black border can be read on any colour!](img/white-text.png)

1. Use a very light colour as the primary colour (white).
2. Have a very dark border (black).
3. Use a readable font, in bold.
4. Make it large enough to see without squinting.
5. Things don't cast bright green shadows.

TL;DR: Just steal GJM-Main 👍
```
﻿Style: Default,Gandhi Sans,74,&H00FFFFFF,&H000000FF,&H00000000,&H96000000,-1,0,0,0,100,100,0,0,1,4,1.5,2,135,135,50,1
Style: Overlap,Gandhi Sans,74,&H00FFFFFF,&H00000000,&H00651018,&H96000000,-1,0,0,0,100,100,0,0,1,4,1.5,2,135,135,50,1
```
[font here](https://www.fontsquirrel.com/fonts/gandhi-sans)


## Karaoke Effects (KFX)

Like typesetting, but this time there's barely even one piece of documentation. Again, [GJM discord](https://discord.gg/hQewDqS).

You'll probably need to know [how to typeset][Typesetting], or at least what the ass tags do, so you can express what you want to the templater.
You'll also need some [K-Timed][Karaoke Timing] lines, of course.

[<span lang="hu-HU">Zahuczky</span>'s KFX Guide](https://zahuczky.com/kfx-guide/) [incomplete, work in progress(?)]

[Jockotan's blog](https://jockotan.wordpress.com/) [incomplete, dead]

[A Programmer's Guide to Karaoke Templaters](https://github.com/arch1t3cht/Aegisub-Scripts/blob/main/doc/templaters.md)

### The Fine Manuals

[Aegisub stock templater](https://aegisub.org/docs/latest/automation/karaoke_templater/)

[KaraOK](https://github.com/logarrhythmic/karaOK/blob/master/README.md)

[The0x539's templater](https://github.com/The0x539/Aegisub-Scripts/blob/trunk/doc/0x.KaraTemplater.md)

## Encoding

~~debatable whether or not this is even part of the fansubbing process but may as well put some stuff~~

**[What you NEED to Know Before Touching a Video File](https://gist.github.com/arch1t3cht/b5b9552633567fa7658deee5aec60453)**

[Jaded Encoding Thaumaturgy Encoding guide](https://jaded-encoding-thaumaturgy.github.io/JET-guide/master/)
<br>there was also the [guide.encode.moe](https://guide.encode.moe/index.html) by the same crowd but idk that it got very far

[r/animepiracy wiki](https://thewiki.moe/advanced/encoding/) has some more links like these

[Captain Disillusion: CD /](https://www.youtube.com/playlist?list=PLQlvLOFtrgKY3enLaI6KzxJYOntg5SAh0) nice youtube vids about basic fundamentals of how video works, don't mind the makeup

## QC

> Quality Checkers (abbreviated QC) are often the last eyes on an episode before it is released. They are responsible for ensuring that the overall quality of the release is up to par with the group’s standards. They are also expected to be familiar with the workflow and many intricacies of every other role.

[Collectr's Curmudgeonly Guide to QC](https://collectr.blogspot.com/2017/02/collectrs-curmudgeonly-guide-to-qc.html)

[Light's QC Ramblings](chatlogs/light-qc-ramblings.log.html) (from MRF #general)

<!--[The Dunning-Kruger effect](https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect) (why QC is important (among other reasons))-->

You can only really QC well if you know what you're looking for - you basically need to know all the other roles. This makes it probably one of the hardest roles to do well.

<span class="warn">**go read all the other categories**</span>

## Releasing

r/animepiracy has a wiki with some nice guides:

- [Muxing](https://thewiki.moe/advanced/muxing/)
- [File Naming](https://thewiki.moe/advanced/naming/)
- [Release standards](https://thewiki.moe/advanced/release-standards/)

but note that these evolved out of the [Seadex muxing standards](old/seadex-muxing-standards.md), as such they are more aimed at shitmuxes than fansub releases

[muxtools](https://muxtools.vodes.pw/) makes life a lot easier if you can get a script working


Honestly the hardest part these days is getting a nyaa account to actually post your release. I think the all you can really do is find someone with an account and ask them nicely to upload for you

## Automation Scripts

- [DependencyControl](https://github.com/typesettingTools/DependencyControl) - package manager for automation scripts. Included by default in some newer builds. Like it or not, you'll have to use it eventually.
    - [AUR Package](https://aur.archlinux.org/packages/aegisub-dependency-control/) (may or may not work)

Have a look through [the DependencyControl script browser](https://typesettingtools.github.io/depctrl-browser/) and the fansubbing wiki's [list of scripts not available in DependencyControl](https://fansubbers.miraheze.org/wiki/List_of_Aegisub_automations_not_available_in_Dependency_Control) to get an idea of what's out there.

[unanimated has a page with details of his scripts](http://unanimated.github.io/ts/scripts-unanimated.htm)

### Writing your own
completely optional, but writing your own scripts for repetitive tasks can save you a lot of time in the long run

read [lyger's guide](http://unanimated.github.io/ts/lua/auto_tutorial.html), skim [unanimated's extra stuff](http://unanimated.github.io/ts/ts-lua.htm), [RTFM](https://aegisub.org/docs/latest/automation/), and google any lua stuff you don't know.

Prior knowledge of programming will be very useful. A decent grasp of maths would definitely help if you write typesetting scripts.

#### General Lua stuff

- [Programming in Lua](https://www.lua.org/pil/) - official book
- [Lua Reference Manual](https://www.lua.org/manual/) - "what was that thing that did the thing"
- [lua-users](http://lua-users.org/wiki) - lots of useful snippets to make up for the tiny lua stdlib

You can also use [MoonScript](https://moonscript.org/) if you want.

----

I don't know whether my use of the guide.encode.moe descriptions qualifies as fair use/fair dealing, so: This "work" is licensed under the [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/).
