SubtitleTools
1.0.0
A comprehensive toolkit for SRT and ASS/SSA subtitle files: parse, validate, repair, shift timestamps, fix encoding, convert formats, manage ASS styles, and translate using OpenAI, Anthropic, or Google AI APIs.
Minimum PowerShell version
5.1
Installation Options
Owners
Copyright
(c) 2025 Iman Edrisian. All rights reserved.
Package Details
Author(s)
- Iman Edrisian
Tags
Subtitle SRT ASS SSA SubRip SubStation Translation Video Encoding Repair Timestamp Batch OpenAI Anthropic Gemini
Functions
Import-SubtitleFile Export-SubtitleFile ConvertFrom-SrtFile ConvertTo-SrtFile ConvertFrom-AssFile ConvertTo-AssFile Test-SrtFile Test-AssFile Test-SubtitleTimestamps Test-SubtitleOverlap Repair-SrtFile Repair-AssFile Repair-SubtitleEncoding Repair-SubtitleOverlap Repair-SubtitleNumbering Add-SubtitleOffset Set-SubtitleOffset Get-SubtitleDuration Set-SubtitleDuration Invoke-SubtitleStretch Merge-SubtitleFile Split-SubtitleFile Get-AssStyle Set-AssStyle New-AssStyle Remove-AssStyle Remove-AssOverrideTag Convert-AssToPlainText Convert-AssToSrt Convert-SrtToAss Invoke-SubtitleTranslation Get-TranslationProvider Set-TranslationProvider Remove-TranslationProvider New-TranslationSession Invoke-BackTranslation Get-TranslationGlossary Add-TranslationGlossaryEntry Remove-TranslationGlossaryEntry Set-SubtitleLineWidth Get-SubtitleInfo Find-SubtitleFile Compare-SubtitleFile Optimize-SubtitleFile Invoke-SubtitleBatch Publish-SubtitleFile Set-SubDLCredential Get-SubDLCredential Remove-SubDLCredential
PSEditions
Dependencies
This module has no dependencies.
Release Notes
Version 1.0.0 — Initial release
- Parse and serialize SRT and ASS/SSA files with full round-trip fidelity
- Validate: block structure, timestamps, overlapping entries
- Repair: numbering, encoding (UTF-16/Windows-1252 → UTF-8), timestamp separators, overlaps
- Timestamp manipulation: shift, stretch (two-point sync), merge, split
- ASS/SSA: style CRUD, override tag stripping, format conversion (SRT ↔ ASS)
- AI translation via OpenAI, Anthropic, and Google APIs with batching, caching, glossary,
content-aware priming, back-translation verification, and resume from checkpoint
- Batch processing: apply any operation to an entire directory tree (PS7+ parallel support)
- Subtitle publishing to SubDL
- No external dependencies; API keys encrypted with Windows DPAPI
FileList
- SubtitleTools.nuspec
- Public\Timestamps\Set-SubtitleDuration.ps1
- Public\Translation\Get-TranslationProvider.ps1
- Public\Translation\Remove-TranslationProvider.ps1
- Public\Utilities\Get-SubtitleInfo.ps1
- Public\Validation\Test-SubtitleOverlap.ps1
- Classes\ValidationResult.ps1
- en-US\about_SubtitleTools.help.txt
- Private\Parsers\Invoke-SrtParser.ps1
- Private\Translation\Invoke-GoogleTranslation.ps1
- Private\Utilities\ConvertFrom-SrtTimestamp.ps1
- Private\Writers\Write-AssEntry.ps1
- Public\ASS\Convert-SrtToAss.ps1
- Public\ASS\Set-AssStyle.ps1
- Public\Core\Export-SubtitleFile.ps1
- Public\Repair\Repair-SubtitleNumbering.ps1
- Public\Sharing\Set-SubDLCredential.ps1
- Public\Timestamps\Set-SubtitleOffset.ps1
- Public\Translation\Invoke-BackTranslation.ps1
- Public\Translation\Set-SubtitleLineWidth.ps1
- Public\Utilities\Invoke-SubtitleBatch.ps1
- Public\Validation\Test-SubtitleTimestamps.ps1
- Tests\Fixtures\overlapping_timestamps.srt
- Tests\Unit\Core.Tests.ps1
- SubtitleTools.psd1
- Data\DefaultAssStyles.json
- Private\Encoding\ConvertTo-NormalizedText.ps1
- Private\Sharing\Invoke-SubDLUpload.ps1
- Private\Translation\Invoke-OpenAITranslation.ps1
- Private\Utilities\ConvertTo-AssTimestamp.ps1
- Private\Writers\Write-AssHeader.ps1
- Public\ASS\Get-AssStyle.ps1
- Public\Core\ConvertFrom-AssFile.ps1
- Public\Core\Import-SubtitleFile.ps1
- Public\Repair\Repair-SubtitleOverlap.ps1
- Public\Timestamps\Add-SubtitleOffset.ps1
- Public\Timestamps\Split-SubtitleFile.ps1
- Public\Translation\Invoke-SubtitleTranslation.ps1
- Public\Translation\Set-TranslationProvider.ps1
- Public\Utilities\Optimize-SubtitleFile.ps1
- Tests\Fixtures\dot_separator.srt
- Tests\Fixtures\valid_full.ass
- Tests\Unit\Repair.Tests.ps1
- SubtitleTools.psm1
- Data\LanguageCodes.json
- Private\Encoding\Get-FileEncoding.ps1
- Private\Sharing\SubDLTokenStore.ps1
- Private\Translation\Invoke-TranslationPriming.ps1
- Private\Utilities\ConvertTo-SrtTimestamp.ps1
- Private\Writers\Write-SrtEntry.ps1
- Public\ASS\New-AssStyle.ps1
- Public\Core\ConvertFrom-SrtFile.ps1
- Public\Repair\Repair-AssFile.ps1
- Public\Sharing\Get-SubDLCredential.ps1
- Public\Timestamps\Get-SubtitleDuration.ps1
- Public\Translation\Add-TranslationGlossaryEntry.ps1
- Public\Translation\New-TranslationSession.ps1
- Public\Utilities\Compare-SubtitleFile.ps1
- Public\Validation\Test-AssFile.ps1
- Tests\Fixtures\malformed_numbering.srt
- Tests\Fixtures\valid_multiline.srt
- Tests\Unit\Timestamps.Tests.ps1
- Classes\AssEntry.ps1
- Data\ProviderDefaults.json
- Private\Encoding\Remove-ByteOrderMark.ps1
- Private\Translation\Build-TranslationSystemPrompt.ps1
- Private\Translation\ProviderStore.ps1
- Private\Utilities\New-SubtitleEntryCopy.ps1
- Public\ASS\Convert-AssToPlainText.ps1
- Public\ASS\Remove-AssOverrideTag.ps1
- Public\Core\ConvertTo-AssFile.ps1
- Public\Repair\Repair-SrtFile.ps1
- Public\Sharing\Publish-SubtitleFile.ps1
- Public\Timestamps\Invoke-SubtitleStretch.ps1
- Public\Translation\Get-TranslationGlossary.ps1
- Public\Translation\Remove-TranslationGlossaryEntry.ps1
- Public\Utilities\Find-SubtitleFile.ps1
- Public\Validation\Test-SrtFile.ps1
- Tests\Fixtures\valid_simple.srt
- Tests\Unit\Validation.Tests.ps1
- Classes\AssHeader.ps1
- Data\SubDLLanguages.json
- Private\Parsers\Invoke-AssParser.ps1
- Private\Translation\Invoke-AnthropicTranslation.ps1
- Private\Utilities\ConvertFrom-AssTimestamp.ps1
- Private\Utilities\Write-SubtitleLog.ps1
- Public\ASS\Convert-AssToSrt.ps1
- Public\ASS\Remove-AssStyle.ps1
- Public\Core\ConvertTo-SrtFile.ps1
- Public\Repair\Repair-SubtitleEncoding.ps1
- Public\Sharing\Remove-SubDLCredential.ps1
- Public\Timestamps\Merge-SubtitleFile.ps1
- Classes\AssStyle.ps1
- Classes\SrtEntry.ps1
- Classes\SubtitleEntry.ps1
- Classes\SubtitleFile.ps1
- Classes\TranslationProvider.ps1
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 1.0.0 (current version) | 4 | 5/25/2026 |