<!--
{
  "availability" : [
    "iOS: 14.0.0 -",
    "iPadOS: 14.0.0 -",
    "macCatalyst: 14.0.0 -",
    "macOS: 11.0.0 -",
    "tvOS: 14.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 7.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UniformTypeIdentifiers",
  "identifier" : "/documentation/UniformTypeIdentifiers/UTTypeReference",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Uniform Type Identifiers"
    ],
    "preciseIdentifier" : "c:objc(cs)UTType"
  },
  "title" : "UTTypeReference"
}
-->

# UTTypeReference

An object that represents a type of data to load, send, or receive.

```
class UTTypeReference
```

## Overview

The [`UTTypeReference`](/documentation/UniformTypeIdentifiers/UTTypeReference) object may represent files on disk, abstract data types with no on-disk representation, or entirely unrelated hierarchical classification systems, such as hardware. Each instance has a unique [`identifier`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/identifier), and helpful properties, [`preferredFilenameExtension`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/preferredFilenameExtension) and [`preferredMIMEType`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/preferredMIMEType).

> Note:
> The system includes static declarations for many common types, which you can look up by identifier, filename extension, or MIME type.

The [`UTTypeReference`](/documentation/UniformTypeIdentifiers/UTTypeReference) object may provide additional information related to the type. For example, it may include a localized user-facing description, a reference URL to technical documentation about the type, or its version number. You can look up types by their conformance to get either a type or a list of types that are relevant to your use case.

To define your own types in your app’s `Info.plist`, see [Defining file and data types for your app](/documentation/UniformTypeIdentifiers/defining-file-and-data-types-for-your-app).

## Topics

### Looking up a type

[`types(tag:tagClass:conformingTo:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/types(tag:tagClass:conformingTo:))

Returns an array of types from the provided tag and tag class.

### Creating a type

[`init(_:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(_:))

Creates a type based on an identifier.

[`init(mimeType:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(mimeType:)-1txq0)

Creates a type based on a MIME type.

[`init(mimeType:conformingTo:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(mimeType:conformingTo:))

Creates a type based on a MIME type and a supertype that it conforms to.

[`init(filenameExtension:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(filenameExtension:))

Creates a type that represents the specified filename extension.

[`init(filenameExtension:conformingTo:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(filenameExtension:conformingTo:))

Creates a type that represents the specified filename extension and conforms to an existing type.

[`init(tag:tagClass:conformingToType:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(tag:tagClass:conformingToType:))

Creates a type that represents the specified tag and tag class and which conforms to an existing type.

[`init(exportedAs:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(exportedAs:))

Creates a type your app owns based on an identifier.

[`init(exportedAs:conformingTo:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(exportedAs:conformingTo:))

Creates a type your app owns based on an identifier and a supertype that it conforms to.

[`init(importedAs:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(importedAs:))

Creates a type your app uses, but doesn’t own, based on an identifier.

[`init(importedAs:conformingTo:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/init(importedAs:conformingTo:))

Creates a type your app uses, but doesn’t own, based on an identifier and a supertype that it conforms to.

### Identifying a type

[`identifier`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/identifier)

The string that represents the type.

### Identifying a type

[`identifier`](/documentation/UniformTypeIdentifiers/UTTypeReference/identifier)

The string that represents the type.

### Obtaining tags

[`preferredFilenameExtension`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/preferredFilenameExtension)

The preferred filename extension for the type.

[`preferredMIMEType`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/preferredMIMEType)

The preferred MIME type for the type.

[`tags`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/tags)

The tag specification dictionary of the type.

### Obtaining tags

[`preferredFilenameExtension`](/documentation/UniformTypeIdentifiers/UTTypeReference/preferredFilenameExtension)

The preferred filename extension for the type.

[`preferredMIMEType`](/documentation/UniformTypeIdentifiers/UTTypeReference/preferredMIMEType)

The preferred MIME type for the type.

[`tags`](/documentation/UniformTypeIdentifiers/UTTypeReference/tags)

The tag specification dictionary of the type.

### Obtaining additional type information

[`isDeclared`](/documentation/UniformTypeIdentifiers/UTTypeReference/isDeclared)

A Boolean value that indicates whether the system declares the type.

[`isDynamic`](/documentation/UniformTypeIdentifiers/UTTypeReference/isDynamic)

A Boolean value that indicates whether the system generates the type.

[`isPublic`](/documentation/UniformTypeIdentifiers/UTTypeReference/isPublic)

A Boolean value that indicates whether the type is in the public domain.

[`referenceURL`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/referenceURL)

The reference URL for the type.

[`version`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/version)

The type’s version, if available.

### Obtaining additional type information

[`isDeclared`](/documentation/UniformTypeIdentifiers/UTTypeReference/isDeclared)

A Boolean value that indicates whether the system declares the type.

[`isDynamic`](/documentation/UniformTypeIdentifiers/UTTypeReference/isDynamic)

A Boolean value that indicates whether the system generates the type.

[`isPublic`](/documentation/UniformTypeIdentifiers/UTTypeReference/isPublic)

A Boolean value that indicates whether the type is in the public domain.

[`referenceURL`](/documentation/UniformTypeIdentifiers/UTTypeReference/referenceURL)

The reference URL for the type.

[`version`](/documentation/UniformTypeIdentifiers/UTTypeReference/version)

The type’s version, if available.

### Checking a type’s relationship to another type

[`supertypes`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/supertypes)

The set of types the type directly or indirectly conforms to.

[`conforms(to:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/conforms(to:))

Returns a Boolean value that indicates whether a type conforms to the type.

[`isSubtype(of:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/isSubtype(of:))

Returns a Boolean value that indicates whether a type is higher in a hierarchy than the type.

[`isSupertype(of:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/isSupertype(of:))

Returns a Boolean value that indicates whether a type is lower in a hierarchy than the type.

### Checking a type’s relationship to another type

[`supertypes`](/documentation/UniformTypeIdentifiers/UTTypeReference/supertypes)

The set of types the type directly or indirectly conforms to.

[`conforms(to:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/conforms(to:))

Returns a Boolean value that indicates whether a type conforms to the type.

[`isSubtype(of:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/isSubtype(of:))

Returns a Boolean value that indicates whether a type is higher in a hierarchy than the type.

[`isSupertype(of:)`](/documentation/UniformTypeIdentifiers/UTTypeReference/isSupertype(of:))

Returns a Boolean value that indicates whether a type is lower in a hierarchy than the type.

### Describing a type

[`localizedDescription`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/localizedDescription)

A localized description of the type.

### Describing a type

[`localizedDescription`](/documentation/UniformTypeIdentifiers/UTTypeReference/localizedDescription)

A localized description of the type.

### Type Properties

[`shazamCustomCatalog`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/shazamCustomCatalog)

A type that represents a custom catalog.

[`shazamSignature`](/documentation/UniformTypeIdentifiers/UTType-swift.struct/shazamSignature)

A type that represents a signature.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)