More Save Options for Metapho

Photos manages edited versions as one bundle. It’s a simple and safe way to handle photo editing. However, sometimes you want more control over how edited version is exported. Now, you can choose between multiple options when you change date / location metadata. Here’s how it works.

  • Save as New Copy
    Save as New Copy brings a efficient, destructive, no-re-rendering workflow to the table. It creates a new copy with edited metadata — or metadata removed copy and adds the copy to your Photos Library. The original file will be moved to the Recently Deleted album if Delete Original after Save option is turned on; after the system delete confirmation alert, of course.
    When copies are made, Save as New Copy applies metadata changes to every assets in the item. This includes all image and video files of the previous version, even MOV part of the Live Photo.

  • Share with Edited Metadata
    Metapho has SafeShare feature that removes all metadata when you export your photo or video. Now the app introduces sharing with edited date / location. For temporary sharing or opening in another app, Share with Edited Metadata gives you metadata modified item just in time, without cluttering your Photos Library.

  • Edit Original
    Of course, the good old way of saving changes is still there. While it feels slightly wasteful to re-render the whole image as JPEG and store it to change some GPS tags, this fast and revertable option is suitable for many cases.

All options are available for batch editing, too. For example, you can export bunch of photos and videos without location metadata to your folder in Files.

And there’s a new option for handling multiple dates in Date Edit. Instead of shifting each dates relatively, Pin All to Same Date changes multiple dates to the same point at once.

Metapho 3.3 is available on the App Store

Metapho and Photos Asset

Safety over efficiency

The stock Photos app for iOS lets third party apps modify photos in its library since iOS 8. Metapho uses this PhotoKit API and the first rule of modifying asset is No one is messing with the original asset. The original file itself is untouchable for a third party app. Even Photos does not change it when you edit an item in Edit menu.

Instead of overwriting original files, PhotoKit asks an app for edited version of the file and saves it in addition to the original as one bundle. This takes more storage space than editing original directly, but helps users to revert to the original state even after numerous edits are committed by Photos or third party apps.

Under this constraint, it is not possible to just modify metadata part of an image file in your library. Metapho has to make a whole new image with modified metadata and give it to PhotoKit. In this process, PhotoKit only accepts image file in specific format. It is very picky on saving edited version. It has to be JPEG with baked-in orientation. For this reason, when you edit metadata with Metapho, the app rotates and re-renders image, if it does not have top-left orientation.

PhotoKit and metadata

When you take a photo or import one, Photos adds creation date and location metadata of the photo to its own metadata database. While this makes it easy to access and modify these metadata, it also makes it possible to have two different set of metadata in Photos database and the image file.

For example, when some app—including Photos for macOS—removes location of a photo, it edits the PhotoKit’s own metadata only, and creates location removed image file on the fly when you export it within the app. If you share the photo with other app like Photos for iOS, it will provide unmodified original image that has location data in it.

Metapho can detect location metadata conflict and show a warning like this.

⚠️ This location is marked as removed. To remove location from metadata, tap Edit > “Remove Location” button.

If you’ve removed location with Metapho, it’s hard to accidentally share location tagged image, via Metapho or other apps. Since the app changes PhotoKit’s database and makes an edited version of the image without location metadata.

Rewrite Date Tags option

I thought that the creation date is less sensitive metadata than location, so I added “Rewrite Date Tags” option. If the option in Date Edit screen is turned off, Metapho behaves like Photos for mac, does not create a new image with edited date tag, and just adjusts metadata managed by PhotoKit.

update: Metapho 3.3 brings more options for exporting.

Why No Apple News

When you open a link to this blog’s RSS feed in Safari for iOS, it opens Apple News and spits out some error like "Content Unavailable". I’ve been trying to fix this by applying Apple News publisher as a channel. But here’s reply from Apple News.

Thank you for your interest in Apple News. Unfortunately, Zininworks doesn't comply with our Apple News guidelines:
The channel contains content that promotes a service, or is focused on product sales, sweepstakes, or contests.

Apparently, a company blog cannot be on Apple News. Now I know why MartianCraft suddenly disappeared from Apple News.

Wordio 1.1

My humble word learning app, Wordio is just updated to 1.1 version. What made it worth the .1 update? Definition look up in Apple Watch app.

Before I received a feature request email and experimented with the feature for a day by myself, I thought handoff to iPhone for definition was enough for a watch wearing word learner. Turns out… I was wrong. It feels great to bring up definition of the words directly on the Apple Watch, especially on the Series 4’s larger screen.

It made me jump through many technical hoops and it’s not rational in financial sense, but well… Wordio has always been a product of love. I use it everyday. If you’re like me and want to collect new words and recite them like crazy person, you should, too.

Metapho 3.2 Release Note

Metapho 3.2 is a major update, with some nice new features and lots of bug fixes and small improvements.

New Features

  • Asset Manager
    Photos manages multiple resources of an item as a bundle for edited item, Live Photo, Portrait photo, and RAW+JPEG. Asset Manager reveals underlying files if multiple assets are available for the item. It makes easy to check and export assets. It just takes few taps to extract MOV file from a Live Photo, or to check original photo’s metadata with Metapho App Extension in Metapho. (Insert Inception OST here)
  • Raw Metadata See All
    In Camera section > See All, raw dictionary representation of metadata as keys and values without formatting, is available. Now it’s possible to copy each value, section, or entire metadata dictionary.
  • Save As…
    Since the default file naming is’t very meaningful in the Apple Photos, file renaming is one of the most popular feature requests. However, it is not possible to rename already-saved photo in the photos library. Now, 3.2 offers Save As… feature, which lets you save a copy with a new name you enter. Life sometimes gives you renaming in the form of Save As + delete original combo.

Bug Fixes and Improvements

  • Live Photo is supported for iCloud Shared Album in the app extension
  • Exports HEIC as HEIC, in Share without Metadata > Save to Files and similar sharing actions
  • Improves VoiceOver supports for accessibility
  • Fixes some crashes caused by exporting a large HEIC image in Action app extension
  • Fixes color profile bug where editing sRGB image converted it to Display P3 in some devices
  • Adds User Comment field under Camera section
  • Displays "/" instead of ":" for file name

Buy Me a Coffee

If you’ve made it this far and want to express your love for the app even more, you can buy me a coffee.

Metapho 3.1 Release Note

It has been long and cold winter here. So I don’t have anymore willpower to write a dedicated blog post. I’d just copy paste App Store update note for Metapho 3.1.

New Features

  • Pinch to zoom just like it’s 2007
  • Shows bit per component and color profile info
  • Supports Loop and Bounce Live Photo
  • Safe Share exports a looping video from Loop and Bounce Live Photo
  • Safe Share exports HEIC for supported actions such as Metapho, Gladys…
  • Animated GIF is animated by tapping the play button
  • Shows count of the Location and Favorite filtered results


  • A Live Photo, edited by Metapho, then shared to Messages by Photos, appears normally on Messages
  • Fixes sharing for edited videos
  • Fixes an issue that prevented re-editing of edited videos
  • Fixes an issue that hid the bottom toolbar when navigation back gesture was cancelled
  • Share without Metadata preserves Display P3 color profile
  • Fixes a crash caused by using Action extension’s save image action before granting Photos permission to the main app
  • Faster filtering by location
  • Location filtered result is refreshed after assigning or removing location of an item
  • Batch Editing does not deselect selected items if possible, after an edit is finished

Introducing Mehssages

Today, I’m feeling extreme meh to announce Mehssages. It is a brand new app enables SMS filter for unknown senders.

I have very low tolerance for unsolicited incoming things on my iPhone. My default choice for notification permission for a new app is Don’t Allow. For emails, I’m a long time happy customer of MailRoute.
For SMS, I had to use a carrier-provided slow and ugly spam filter app. But not anymore. Thanks to the iOS 11’s new Messages filter extension, I made an app that filters SMS and MMS from unknown senders into a separate, muted list in the Messages. These unsolicited meh-ssages (did you get it?) do not make notifications and land in the SMS Junk list silently. A filtered message does add badge count of the Messages, so I can check them when I need.

By default, Mehssages filters every SMS and MMS from numbers not saved in the Contacts. What about important messages from unknown senders, like bank statement or credit card usage or verification code for 2 step authentication? There’s Whitelist for that. You can whitelist certain phone number or message body text. An iMessages app is also included for convenient whitelisting without leaving Messages.


Mehssages works completely offline. Since its filtering rule is quite simple, the app does not need to send incoming messages to a server to get deferred filtering results. For more, see our privacy policy.

Attention is precious and fragile resource. You’ve already wasted fair amount of it by reading this. Do not add spam messages to the mix. Mehssages is available on the App Store.

Metapho 3.0 Release Note

Video support in Action After long wait, 3.0 has new features probably make long time users shout out “finally”.

Video support

Since the beginning of Metapho, Video support is the most requested feature. This summer, I finally made the app could read and write video metadata, in a similar way photo metadata handled. Date / Location Edit, Safe Share, Batch Editing… all works with videos now.

Improved Action extension

From iOS Share Sheet, You can activate the Action extension with multiple items selected. Select photos and videos as many as you want in Photos, open Metapho Action, swipe side by side to navigate. For Live Photos, Action extension also plays short live photo preview, and 3D touch for play works, too.

Album support

3.0 adds My Album and Smart Album support. And there are location and favorite filters, too. I’ve merged albums and filters together, so that each album could be filtered by location or favorite filter.


The app performance is finely tuned for faster, smoother, and more responsive experience. It shows locally available information first when download from iCloud Photos Library is in progress. For a long running operation, the app reports more accurate progress.

JPEG Compression

A third party app which edits a photo in the Photos Library, has to normalize image orientation to 1 for in–place save. This means, even for a simple metadata editing, the app must render and compress the photo as a new jpg again. Metapho used to apply a moderate compression rate for re–rendering, which leads to reduced file size for some large photos with low rate. Metapho 3.0 does not re–render the photos that already have normal orientation, and uses higher compression rate for non-1 oriented images. Since JPEG to JPEG is lossy conversion, I think this is right way to do compress under current OS constraints although this causes not–so–ideal storage usage. For Safe Share, the constraints above does not apply, so Metapho just replaces metadata part of the JPEG file, writes it to the temporary space, then shares the file.

Removal of Edit extension

When the Metapho 1.0 was released, iOS 8’s app extension was still in the very early stage, so there was confusion among devs — and App Store review team also — where to put what extensions. Out of that chaos, Metapho started with Edit extension only, but quickly added Action extension. Edit extension is not an ideal place for Metapho because Photo Edit extension point does not allow third party apps to change the photo asset’s metadata in Photos Library database. There has been ugly and unreliable workaround for this limitation. To sort things out, Metapho 3.0 removes Edit extension. To edit metadata, use Open in Metapho button in the Action extension. Metapho can do much better job changing Date / Location data than Edit extension.

Changes, Improvements, and Bug Fixes

  • File extension for Safe Share is changed to jpg from jpeg
  • Delete current item button is available on the bottom toolbar
  • Shows more granular shutter speeds
  • Photo grid cells fit more nicely on the various adaptive sizes
  • Reverting to the original date restores sub-second precision
  • Supports Open in Google Maps…
  • Going back to photo grid is easier with screen edge swipe gesture
  • Fixes Safe Share to Messages bug, showing black preview image

Download on the App Store


English is not my first language. Unfortunately, it is the essential language for app business and tech community, and so many entertainment and learning materials are provided only in English.

When I decided to make myself a programmer, improving my English–reading skill was very important. Extending my vocabulary was one of the key things to do. I read written English contents mostly on the iOS devices and Mac. And they have excellent built–in dictionaries. I did constantly look up a new word only to find that it was not a new word, and I just forgot that I already looked it up before. I need to collect and keep track of new words I have looked up, so I made an app for that.

Whether I’m reading something on iPhone, iPad, or on the web, I can easily collect a new word using iOS app or recently created web app. CloudKit keeps everything in sync in background. Wordio complications for Apple Watch forces me to be exposed to those words whenever I glance my watch face. The app has been very helpful for me to improve my reading1.

For a casual life–long english learner like me, managing already-looked-up-words could not be overemphasized. If you’re interested and ready to pay $2.99 to see if it’s for you, you can buy Wordio on the App Store.

  1. not much for writing as you can see at this point

Metapho 2.1.2 Release Note

Version numbering could be arbitrary sometimes. Many things have been changed under the hood for this huge point update.
Download on the App Store

Memory footprint

Memory usage for an app extension is very constrained. For an app extension handling images like Metapho, it is easy to be killed by OS and fail to launch, unless the app extension manages memory usage carefully.
A JPEG file stores its metadata in the head. If Metapho Action extension gets the location of the file, there’s no reason to load entire image data into memory. Just reading head section for metadata would be sufficient. By doing this, Action extension can show a very large image like this. Similar stuff also applies to sharing. Now, Metapho exports metadata modified file in a memory efficient way so that you can Safe Share a huge image in Action extension.

Film Mode

Cameras made by Fuji Film have special custom metadata, Film Mode. It seems like that dozen of film simulation modes are valuable metadata for Fuji Film camera owners. After digging into custom note section of the photo and studying camera manuals, I could extract Film Mode and put it on the camera info section.

RAW and iCloud Photos Library

Apple says iOS and RAW are not very friendly. In the host app, Metapho tries to get RAW assets if they are available locally or on the iCloud Photos Library. In the app extension, iOS Photos app sometimes gives the app extension RAW, sometimes JPEG. If only JPEG is available in the Photos app, the app extension uses provided JPEG and will not try to retrieve underlying RAW.

DNG support

iOS 10 lets capable devices capture in RAW. The result is DNG, Adobe digital negative file format. Unfortunately, iOS does not have DNG decoder and just treat it as a small thumbnail. Metapho reads DNG metadata and at least shows original pixel size of the image. It’s not possible for now to edit or share an original size image directly from a DNG file in Metapho. If you really want to handle DNG in iOS you should convert DNG into JPEG first, using DNG develop apps like Lightroom or Camera+.

Small changes and fixes

  • Metapho ignored a photo’s orientation when it showed pixel dimension info. For a portrait photo, EXIF width is actually height. Now the app swaps height and width for rotated orientation.
  • Sometimes Map View got confused and gave us wrong compass icon. Not any more.
  • Reports 0.303030303 shutter speed as 1/33s not 1/30s.