RapidTools is a Phoenix LiveView app for batch media workflows including conversion, resizing, compression, PDF exports, individual downloads, and ZIP bundles.
- Image converter at
/ - Image resizer at
/image-resizer - Video converter at
/video-converter - Extract audio at
/extract-audio - Video compressor at
/video-compressor - Audio converter at
/audio-converter - Document converter at
/document-converter - Photos to PDF at
/photos-to-pdf - Together audios at
/together-audios - Together videos at
/together-videos - Images to video at
/images-to-video
PNGJPGWEBPHEICAVIFENC
Original formatJPGPNGWEBP
MP4MOVWEBMMKVAVI
MP4
MP3WAVOGGAACFLAC
- Input:
MP4,MOV,WEBM,MKV,AVI,TS - Output:
MP3,WAV,OGG,AAC,FLAC
PDF -> PNGPDF -> JPGPDF -> Markdown (Clean)PDF -> Markdown (Fidelity)JPG/PNG/WEBP -> PDFDOCX -> PDFwhen LibreOffice is availableODT -> PDFwhen LibreOffice is availableRTF -> PDFwhen LibreOffice is availableTXT -> PDFwhen LibreOffice is availableMD -> PDFwhen LibreOffice is availableHTML -> PDFwhen LibreOffice is available
- Input:
JPG,PNG,WEBP,HEIC,AVIF,ENC - Output:
PDF
- Input:
PNG,JPG,JPEG,WEBP - Output:
MP4,GIF - Configurable interval between frames
- Batch upload and conversion per tool
- Batch audio extraction from uploaded videos
- Batch image resizing with presets for social, thumbnails, and stores
- Batch video compression with quality and resolution presets
- PDF page extraction, image-to-PDF generation, and runtime-backed document-to-PDF conversion
- Dedicated photo-to-PDF route with manual page reordering before export
- Audio joining into a single downloadable file
- Individual file download after conversion
- ZIP package download for converted batches
- Phoenix LiveView interface with dedicated screens for image, video, audio, extraction, documents, and assembly workflows
- Elixir and Erlang compatible with the versions in
mix.exs ffmpeginstalled locally for audio and video conversion- ImageMagick installed locally as
magickorconvertfor image conversion
mix setup
mix phx.serverOpen http://localhost:4000.
If port 4000 is already in use, you can start the app on the next available port:
sh dev-server.shYou can also pick a different starting point:
PORT=4010 sh dev-server.shIf you change any file under config/, restart the server instead of relying on code reloading.
mix precommitFor focused iteration:
mix test test/rapid_tools/audio_converter_test.exs
mix test test/rapid_tools_web/live/audio_converter_live_test.exs
mix test test/rapid_tools/audio_extractor_test.exs
mix test test/rapid_tools_web/live/extract_audio_live_test.exs
mix test test/rapid_tools/image_resizer_test.exs
mix test test/rapid_tools_web/live/image_resizer_live_test.exs
mix test test/rapid_tools/video_compressor_test.exs
mix test test/rapid_tools_web/live/video_compressor_live_test.exs
mix test test/rapid_tools/pdf_converter_test.exs
mix test test/rapid_tools/document_converter_test.exs
mix test test/rapid_tools_web/live/document_converter_live_test.exs
mix test test/rapid_tools/audio_joiner_test.exs
mix test test/rapid_tools_web/live/together_audios_live_test.exs