diff --git a/app/assets/javascripts/discourse/app/lib/media-optimization-utils.js b/app/assets/javascripts/discourse/app/lib/media-optimization-utils.js
index ad581f01336..cd73d050073 100644
--- a/app/assets/javascripts/discourse/app/lib/media-optimization-utils.js
+++ b/app/assets/javascripts/discourse/app/lib/media-optimization-utils.js
@@ -1,9 +1,11 @@
import { Promise } from "rsvp";
+import { isAppleDevice } from "discourse/lib/utilities";
// Chrome and Firefox use a native method to do Image -> Bitmap Array (it happens of the main thread!)
-// Safari uses the `
` element due to https://bugs.webkit.org/show_bug.cgi?id=182424
+// Safari < 15 uses the `
` element due to https://bugs.webkit.org/show_bug.cgi?id=182424
+// Safari > 15 still uses `
` due to their buggy createImageBitmap not handling EXIF rotation
async function fileToDrawable(file) {
- if ("createImageBitmap" in self) {
+ if ("createImageBitmap" in self && !isAppleDevice()) {
return await createImageBitmap(file);
} else {
const url = URL.createObjectURL(file);