Convert URL Schemes Plist Configuration to JSON

Convert the CFBundleURLTypes section of Info.plist to JSON. Understand how URL scheme registration works in plist format.

Info.plist

Detailed Explanation

URL Schemes in Info.plist

iOS and macOS apps register custom URL schemes through the CFBundleURLTypes array in Info.plist. Each entry contains a CFBundleURLSchemes array and optional CFBundleURLName.

Plist Structure

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLName</key>
    <string>com.example.myapp</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>myapp</string>
      <string>myapp-dev</string>
    </array>
  </dict>
  <dict>
    <key>CFBundleURLName</key>
    <string>OAuth Callback</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>myapp-oauth</string>
    </array>
  </dict>
</array>

JSON Output

{
  "CFBundleURLTypes": [
    {
      "CFBundleURLName": "com.example.myapp",
      "CFBundleURLSchemes": ["myapp", "myapp-dev"]
    },
    {
      "CFBundleURLName": "OAuth Callback",
      "CFBundleURLSchemes": ["myapp-oauth"]
    }
  ]
}

Nested Structure Handling

This example demonstrates how the converter handles arrays of dictionaries -- a very common pattern in Info.plist. Each <dict> inside the <array> becomes a JSON object, and inner arrays like CFBundleURLSchemes become nested JSON arrays. The tree view is particularly helpful here for visualizing the nesting levels.

Deep Linking and Universal Links

Modern apps often combine URL schemes with Universal Links (via applinks: in the Associated Domains entitlement). The URL schemes in Info.plist handle the legacy deep-linking path, while universal links are configured separately.

Use Case

Useful for documenting and auditing the URL schemes registered by an iOS app, sharing the configuration with web teams for deep-link integration, or migrating scheme registrations to a JSON-based configuration system.

Try It — Plist ↔ JSON Converter

Open full tool