The problem is almost never the codec
People arrive here after a file refused to open, and assume the codec has to be changed. Nearly always it does not. HEVC sits inside an MP4 perfectly legally, and the player rejecting your file is usually objecting to the wrapper or to a tag, not to the compression.
So the fix is a remux rather than a transcode. The video stream is lifted out of whatever container it arrived in and written into an MP4 unchanged, which takes seconds and leaves every pixel exactly as it was. Re-encoding would take minutes and would cost you a generation of quality to solve a problem that was never about quality.
The hvc1 tag, which is the actual fix
There is a four character code inside an MP4 that says how the HEVC stream is packaged. Two values are valid: hvc1 and hev1. Apple's decoders only accept the first. Plenty of tools write the second, which produces a file that VLC plays happily and that QuickTime, iOS Photos and Final Cut all refuse without explaining why.
This converter writes hvc1 whenever it copies an HEVC stream into an MP4 or a MOV. That one detail is what turns an unplayable recording into a playable one, and it is why the conversion is worth doing even though the codec and the container are technically unchanged.
Reading the label on each row
Every file reports what actually happened rather than showing one generic spinner, because the difference matters to you. No re-encode means the picture was copied and is identical to the source. Picture copied, audio re-encoded means the video was untouched and only an audio format an MP4 cannot store was converted, which is common with AC-3 from cameras and screen recorders. Re-encoded means the stream genuinely could not be carried over.
Everything runs in your browser. Files up to 500 MB are accepted, nothing is sent to a server, and the engine is fetched once and then cached.