diff --git a/README.md b/README.md
index ace1a3a..b4c9b7d 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ VERT is built in Svelte and TypeScript.
- Conversion settings
- User-friendly interface built with Svelte
-\* Non-local video conversion is available with our official instance, but the [daemon](https://github.com/VERT-sh/vertd) is easily self-hostable to maintain privacy and fully local functionality.
+\* Local video conversion in-browser is supported, but some conversion may require server-side processing. Server video conversion is available with our official instance, but the [daemon](https://github.com/VERT-sh/vertd) is easily self-hostable to maintain privacy and fully local functionality.
## Documentation
diff --git a/docs/VIDEO_CONVERSION.md b/docs/VIDEO_CONVERSION.md
index 10f601f..20f148f 100644
--- a/docs/VIDEO_CONVERSION.md
+++ b/docs/VIDEO_CONVERSION.md
@@ -2,9 +2,9 @@
This file covers how video conversion works when using VERT.
-On VERT, video uploads to a server for processing by default. This is because video conversion is hard to do in a browser as it uses a lot of resources, and will end up running very slowly (if it even works at all).
+On VERT, video processing is done locally in your browser whenever possible using [Mediabunny](https://mediabunny.dev). However, some conversions may require server-side processing if it's unsupported or too slow to do it in the browser for some reason.
-Our answer to this is [`vertd`](https://github.com/VERT-sh/vertd), which is a simple FFmpeg wrapper built in Rust. If you don't understand all that technical jargon, it basically allows you to convert videos using the full capacity of your computer, which results in much faster conversion. It runs on your computer (or a server somewhere, if you know what you're doing), and the VERT web interface reaches out to it in order to convert your videos.
+Server-side processing is done through [`vertd`](https://github.com/VERT-sh/vertd), which is a simple FFmpeg wrapper built in Rust. If you don't understand all that technical jargon, it basically allows you to convert videos using the full capacity of your computer, which results in more conversions supported and being much faster. It runs on your computer (or a server somewhere, if you know what you're doing), and the VERT web interface reaches out to it in order to convert your videos, if it requests for it.
We host an official instance of [`vertd`](https://github.com/VERT-sh/vertd) so you do not have to host it yourself for convenience, but considering you're here, you probably want to host it for yourself. Essentially:
diff --git a/eslint.config.js b/eslint.config.js
index 91dafe0..0c1d095 100644
--- a/eslint.config.js
+++ b/eslint.config.js
@@ -34,6 +34,7 @@ export default ts.config(
files: ["**/*.ts", "**/*.svelte.ts", "**/*.svelte"],
rules: {
"svelte/no-at-html-tags": "off",
+ "svelte/valid-compile": "off"
},
},
);
diff --git a/messages/en.json b/messages/en.json
index 92c73e9..86f867b 100644
--- a/messages/en.json
+++ b/messages/en.json
@@ -158,7 +158,7 @@
},
"vertd_server": "what are you doing..? you're supposed to run the vertd server!",
"vertd_generic_view": "View error details",
- "vertd_generic_body": "An error occurred whilst whilst trying convert your video. Would you like to submit this video to the developers to help fix this bug? Only your video file will be sent. No identifiers will be uploaded.",
+ "vertd_generic_body": "An error occurred whilst whilst trying to convert your video. Would you like to submit this video to the developers to help fix this bug? Only your video file will be sent and no identifiers will be uploaded.",
"vertd_generic_title": "Video conversion error",
"vertd_generic_yes": "Submit video",
"vertd_generic_no": "Don't submit",
@@ -226,12 +226,12 @@
"rate": "Sample rate (Hz)"
},
"vertd": {
- "title": "Video conversion",
+ "title": "Server video conversion",
"status": "status:",
"loading": "loading...",
"available": "available, commit id {commitId}",
"unavailable": "unavailable (is the url right?)",
- "description": "The vertd project is a server wrapper for FFmpeg. This allows you to convert videos through the convenience of VERT's web interface, while still being able to harness the power of your GPU to do it as quickly as possible.",
+ "description": "When possible, VERT converts videos locally in your browser, however some conversions may require the use of the vertd project, a server wrapper for FFmpeg. This allows you to convert videos through the convenience of VERT's web interface, while still being able to harness the power of your GPU to do it as quickly as possible.",
"hosting_info": "We host a public instance for your convenience, but it is quite easy to host your own on your PC or server if you know what you are doing. You can download the server binaries [vertd_link]here[/vertd_link] - the process of setting this up will become easier in the future, so stay tuned!",
"instance": "Instance",
"url_placeholder": "Example: http://localhost:24153",
@@ -284,7 +284,7 @@
"title": "About",
"why": {
"title": "Why VERT?",
- "description": "File converters have always disappointed us. They're ugly, riddled with ads, and most importantly; slow. We decided to solve this problem once and for all by making an alternative that solves all those problems, and more.
All non-video files are converted completely on-device; this means that there's no delay between sending and receiving the files from a server, and we never get to snoop on the files you convert.
Video files get uploaded to our lightning-fast RTX 4000 Ada server. Your videos stay on there for an hour if you do not convert them. If you do convert the file, the video will stay on the server for an hour, or until it is downloaded. The file will then be deleted from our server."
+ "description": "File converters have always disappointed us. They're ugly, riddled with ads, and most importantly; slow. We decided to solve this problem once and for all by making an alternative that solves all those problems, and more.
When possible, all files are converted completely on-device; this means that there's no delay between sending and receiving the files from a server, and we never get to snoop on the files you convert.
If the conversion is unsupported locally in your browser, video files get uploaded to our lightning-fast RTX 4000 Ada server. Your videos stay on there for an hour if you do not convert them. If you do convert the file, the video will stay on the server for an hour, or until it is downloaded fully. The file will then be deleted from our server."
},
"sponsors": {
"title": "Sponsors",
@@ -314,17 +314,17 @@
},
"credits": {
"title": "Credits",
- "contact_team": "If you would like to contact the development team, please use the email found on the \"Resources\" card.",
+ "contact_team": "If you would like to contact the VERT team, please use the email found on the \"Resources\" card.",
"notable_contributors": "Notable contributors",
"notable_description": "We'd like to thank these people for their major contributions to VERT.",
"github_contributors": "GitHub contributors",
"github_description": "Big thanks to all these people for helping out! [github_link]Want to help too?[/github_link]",
"no_contributors": "Seems like no one has contributed yet... [contribute_link]be the first to contribute![/contribute_link]",
"libraries": "Libraries",
- "libraries_description": "A big thanks to FFmpeg (audio, video), ImageMagick (images) and Pandoc (documents) for maintaining such excellent libraries for so many years. VERT relies on them to provide you with your conversions.",
+ "libraries_description": "A big thanks to Mediabunny (video), FFmpeg (audio, video), ImageMagick (images) and Pandoc (documents) for maintaining such excellent libraries for so many years. VERT relies on them to provide you with your conversions.",
"roles": {
"lead_developer": "Lead developer; conversion backend, UI implementation",
- "developer": "Developer; UI implementation",
+ "developer": "Developer; conversion backend, UI implementation",
"designer": "Designer; UX, branding, marketing",
"docker_ci": "Maintaining Docker & CI support",
"former_cofounder": "Former co-founder & designer"
@@ -341,6 +341,7 @@
"magick": "Error in Magick worker, image conversion may not work as expected.",
"ffmpeg": "Error loading FFmpeg, some features may not work as expected.",
"pandoc": "Error loading Pandoc worker, document conversion may not work as expected.",
+ "mediabunny": "Error loading Mediabunny worker, video conversion may not work as expected.",
"no_audio": "No audio stream found.",
"invalid_rate": "Invalid sample rate specified: {rate}Hz",
"file_too_large": "This file exceeds the {limit}GB browser / device limit. Try Firefox or Safari to convert this large file, which typically have higher limits."
@@ -354,7 +355,7 @@
},
"conversions": {
"title": "Conversions",
- "description": "Most conversions (images, documents, audio) happen entirely locally on your device using WebAssembly versions of the relevant tools (e.g. ImageMagick, Pandoc, FFmpeg). This means your files never leave your device and we will never have access to them.
Video conversions are performed on our servers because they require more processing power and cannot be done very quickly on the browser yet. Videos you convert with VERT are deleted after being downloaded, or after one hour, unless you explicitly give permission for us to store them longer purely for troubleshooting purposes."
+ "description": "Most conversions (video, images, documents, audio) happen entirely locally on your device using WebAssembly versions of the relevant tools (e.g. ImageMagick, Pandoc, FFmpeg), or tools that use built-in browesr APIs (e.g. Mediabunny). This means your files never leave your device and we will never have access to them.
When possible, video conversions happen locally in your browser using Mediabunny, however if unsupported they are performed on our servers. Videos you upload to our servers (using vertd) are deleted after being downloaded fully, or after one hour no matter its status, unless you explicitly give permission for us to store them longer purely for troubleshooting purposes."
},
"donations": {
"title": "Donations",
@@ -362,7 +363,7 @@
},
"conversion_errors": {
"title": "Conversion Errors",
- "description": "When a video conversion fails, we may collect some anonymous data to help us diagnose the issue. This data may include:",
+ "description": "When a server video conversion fails (vertd), we may collect some anonymous data to help us diagnose the issue. This data may include:",
"list_job_id": "The job ID, which is the anonymized file name",
"list_format_from": "The format you converted from",
"list_format_to": "The format you converted to",
@@ -376,13 +377,13 @@
},
"local_storage": {
"title": "Local Storage",
- "description": "We use your browser's local storage to save your settings, and your browser's session storage to temporarily store the GitHub contributors list for the \"About\" section to reduce repeated GitHub API requests. No personal data is stored or transmitted.
The WebAssembly versions of the conversion tools we use (FFmpeg, ImageMagick, Pandoc) are also stored locally on your browser when you first visit the website, so you don't need to redownload them each visit. No personal data is stored or transmitted. You may view or delete this data at any time in the \"Privacy & data\" section in [settings_link]settings[/settings_link]."
+ "description": "We use your browser's local storage to save your settings, and your browser's session storage to temporarily store the GitHub contributors list for the \"About\" section to reduce repeated GitHub API requests. No personal data is stored or transmitted.
The WebAssembly or browser versions of the conversion tools we use (Mediabunny, FFmpeg, ImageMagick, Pandoc) are also stored locally on your browser when you first visit the website, so you don't need to redownload them each visit. No personal data is stored or transmitted. You may view or delete this data at any time in the \"Privacy & data\" section in [settings_link]settings[/settings_link]."
},
"contact": {
"title": "Contact",
"description": "For questions, email us at: [email_link]hello@vert.sh[/email_link]. If you are using a third-party instance of VERT, please contact the hoster of that instance instead."
},
- "last_updated": "Last updated: 2025-10-29"
+ "last_updated": "Last updated: 2026-03-11"
},
"toast": {
"insecure_context": "You are visiting VERT in an insecure context (e.g. accessing over HTTP instead of HTTPS). Some features may not work as expected."
diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte
index 0ce7352..bdd8bbe 100644
--- a/src/routes/about/+page.svelte
+++ b/src/routes/about/+page.svelte
@@ -38,7 +38,7 @@
avatar: avatarNullptr,
},
{
- name: "JovannMC",
+ name: "JovannMC // Maya",
github: "https://github.com/JovannMC",
role: m["about.credits.roles.developer"](),
avatar: avatarJovannMC,