It looks like the string you provided (JUQ-968-engsub Convert02-23-49 Min) appears to reference a specific piece of media—likely a video file, a subtitle conversion log, or a timestamp marker related to a Japanese adult video (JAV) title.
If the subtitle is in ASS/SSA format and you want the styling preserved, replace subtitles= with ass=.
6. Technical Design
| Layer | Details |
|-------|---------|
| Front‑end | React (v18) functional component EngSubConvert. Uses react-dropzone for uploads, Formik for form validation, and axios for API calls. Shows real‑time progress via Server‑Sent Events (SSE) or WebSocket (fallback to polling). |
| Back‑end | Node.js (>=18) + Express. Endpoint: POST /api/engsub/convert. Accepts multipart/form-data. Uses multer for temporary storage (in /tmp/juq968). |
| Processing Engine | - Parsing: subtitle npm library (supports SRT/VTT/ASS).
- Time‑shift: Convert timestamps to seconds, apply offset (signed integer), clamp to ≥ 0, re‑format.
- Conversion: Same library’s toVtt(), toAss(), toSrt().
- Batch: Process files sequentially in a worker pool (max 4 concurrent). |
| ZIP Generation | archiver library streams output directly to response (no intermediate large buffers). |
| Log Generation | Build an array of fileName, originalStart, newStart rows; stream to CSV via fast-csv. |
| Security | - Validate MIME type and extension.
- Size limit: 10 MB per file, 100 MB total per request.
- Delete temp files after response (fs.unlink). |
| Performance | - Expected processing time: ~0.15 s per file (10 MB).
- Memory footprint ≤ 50 MB for 100 files. |
| Testing | - Unit tests for timestamp conversion (edge cases: midnight roll‑over, negative clamp).
- Integration tests for multipart upload, ZIP download, log correctness.
- End‑to‑end Cypress test covering UI flow. |
| Observability | - Log start/end timestamps, file counts, errors to CloudWatch (or equivalent).
- Metrics: juq968_requests_total, juq968_processing_seconds. |
4. Acceptance Criteria
| # | Given | When | Then |
|---|-------|------|------|
| AC‑1 | The user is on the “EngSub Convert” page | They upload one or more subtitle files and click Convert | The system validates each file (correct extension, well‑formed timestamps) and returns an error list for any invalid file, aborting processing for those files only. |
| AC‑2 | The offset field is empty | The user clicks the “02:23:49 Min” shortcut button | The field is auto‑filled with 02:23:49 and the UI shows “+2 h 23 m 49 s”. |
| AC‑3 | The user selects .srt as source and .vtt as target | Conversion runs | All timestamps are shifted, the file is rewritten in VTT syntax, and the download name changes to <original‑name>.vtt. |
| AC‑4 | Any subtitle line after shifting would become negative (e.g., original 00:00:02 shifted by –00:00:05) | The conversion runs | The system clamps the timestamp to 00:00:00 and flags the line in the preview log with a warning. |
| AC‑5 | The user uploads ≥ 1 and ≤ 100 files | The conversion starts | A progress bar shows “Processing X of Y files”, and a Cancel button aborts remaining work while preserving already processed outputs. |
| AC‑6 | The conversion finishes successfully | The UI shows Download All (ZIP) and Download Log (CSV) buttons | Clicking either triggers a file‑download with correct MIME types (application/zip, text/csv). |
| AC‑7 | The user clicks Preview before conversion | The system displays the first 5 subtitle entries after applying the offset (but before format conversion) | The preview table includes original timestamp, new timestamp, and subtitle text. |
| AC‑8 | The user has an invalid file (e.g., .txt) | They attempt to process it | The UI shows a clear error “Unsupported file type – only .srt, .vtt, .ass are allowed.” |
| AC‑9 | The user’s browser is IE11 (unsupported) | They load the page | The UI displays a friendly “Your browser is not supported – please use Chrome, Edge, or Firefox.” |
| AC‑10 | The conversion is completed | The server cleans up temporary files | No processed files remain on the server after 15 minutes or after the user downloads, whichever comes first. |
Want to learn more about video conversion, subtitling best practices, or Japanese media codes? Explore our other technical guides and legal resources.

Sign Up for exclusive sales and offers!