Blog
Blog arrow right Unity arrow right Unity AR Foundation Face Tracking vs Banuba Face AR SDK

Unity AR Foundation Face Tracking vs Banuba Face AR SDK

Unity AR Foundation tracks faces through two provider plug-ins only: Apple ARKit on iOS and Google ARCore on Android. Teams that need desktop too license a native Unity plugin, such as the Banuba Face AR SDK for Unity. Banuba Face AR SDK is a real-time, on-device face tracking and AR effects SDK that runs at 30 FPS on mid-range mobile hardware with a -80° to +80° head-angle tracking range.

Banuba wrote this comparison, so treat the Banuba figures as a vendor's own account and check every number against the sources listed at the end. The short version: AR Foundation is the right choice for a free, native iOS or Android face AR build, and a licensed Unity plugin earns its cost when one Unity project has to ship the same face tracking to Windows and macOS as well as to phones.

face tracking unity banuba
Stay tuned Keep up with product updates, market news and new blog releases
Thank You!

[navigation]

TL;DR:

  • Unity's own documentation lists face tracking support for three provider plug-ins only: Google ARCore XR, Apple ARKit XR, and Unity OpenXR Android XR. The visionOS plug-in, HoloLens, OpenXR Meta, and XR Simulation are not listed, so you cannot test faces in the Editor.
  • Google documents a 468-point face mesh for ARCore in AR Foundation, plus a centre pose and three region poses on the left forehead, right forehead, and tip of the nose.
  • Google also documents a hard limit worth planning around: AR Foundation targeting Android devices can only track a single face at a time.
  • Apple's face-tracking configuration detects faces within 3 metres of the front camera, and since iOS 14 it runs on any device with an Apple Neural Engine rather than requiring a TrueDepth camera.
  • Banuba Face AR SDK detects 68 facial anchor points, builds a 3D mesh of up to 3,308 vertices and tracks 37 mesh morphs, which is what makes real-time nose, eye, lip and chin reshaping hold its shape.
  • Banuba Face AR SDK for Unity is a native library compiled for Windows, macOS, iOS, and Android, so desktop is the platform gap it closes against AR Foundation. Browser face AR runs on Banuba's separate Web SDK, not on the Unity plugin.
  • Banuba Face AR SDK requires Android 8.0 (API level 26) with OpenGL ES 3.0 and iOS 13 or later, a higher OS floor than ARCore's Android 7.0, so device reach is a trade, not a clean win.
  • Of the thirteen face tracking options a Unity team usually shortlists, only seven publish a Unity integration path. The table below says which.

How to choose a face tracking stack for Unity

Four questions settle this before any code is written.

Which platforms does this one Unity project have to ship to? If the answer is iOS, Android, or both, AR Foundation covers it for free and is the sensible default. If the answer includes Windows or macOS, AR Foundation's face subsystem does not go there at all, and you need a native plugin.

How many faces at once? Google's AR Foundation guide states that on Android only one face can be tracked at a time. A two-player face game, a group filter, or a salon mirror with two people in frame rules ARCore out on its own documentation.

How much mesh do the effects need? Overlay accessories sit happily on a coarse mesh. Structural morphing, beauty retouch, and makeup need a denser one, and that is a vendor-level decision you cannot patch later.

Where does the video go? If frames have to stay on the handset, the tracker has to run on the device. Banuba processes every frame on the user's device, so a live stream carries no cloud round-trip.

If you are weighing the same question for a different workload, we ran the numbers separately on face tracking for real-time video conferencing, where latency and call quality, rather than mesh density, decide the shortlist.

Test Banuba Face AR SDK in your own Unity project   Import the Unity package, run the bundled demo scene on the cheapest handset  you ship to and on a desktop build, and measure the frame time against your own  effects. The trial token lasts 14 days. Get a free trial

Face tracking options for Unity, and which ones publish a Unity path

Thirteen options come up repeatedly on a Unity face AR shortlist. Only seven of them document a Unity integration; the rest are good SDKs that you would have to wrap yourself.

Option

Best for

Documented Unity path

Cost model

Apple ARKit XR Plug-in (AR Foundation)

Free native iOS face tracking

Yes, first-party Unity plug-in

Free with the platform

Google ARCore XR Plug-in (AR Foundation)

Free native Android face tracking

Yes, first-party Unity plug-in

Free with the platform

Unity OpenXR: Android XR

Face tracking on Android XR devices

Yes, listed as supported in AR Foundation 6.1

Free with the platform

Banuba Face AR SDK for Unity

One Unity build covering phones and desktop

Yes, first-party Unity package

Flat annual licence or active-user model, 14-day trial

Visage Technologies (Visage SDK)

Precision head pose, gaze and multi-face work

Yes, Unity plugin documented

Quote only, free evaluation licence

Zappar Universal AR

Browser-first WebAR built out of Unity

Yes, Unity iOS, Android and WebGL build targets

Cost per view

Faceunity Nama SDK

Large effect catalogue across mobile and desktop

Yes, Unity listed and an official Unity demo repo

Quote only

DeepAR

Effects engine for native apps and the web

No, Unity is not in the official SDK feature matrix

Public pricing, free watermarked dev licence

Snap Camera Kit

Reaching the Snapchat Lens ecosystem

Not publicly documented for Unity

No published price, access by application

Google MediaPipe Face Landmarker

Open-source landmarks with no licence cost

No first-party Unity package

Apache 2.0

Google ML Kit Face Detection

Free on-device detection and basic landmarks

No first-party Unity wrapper

Free

BytePlus Effects

TikTok-grade effect catalogue at volume

Not listed among its supported platforms

Quote only

OpenCV

Building the pipeline yourself

No documented Unity bindings

Apache 2.0 for the 4.x branch

Read the right-hand column as "what the vendor publishes", not "what is technically impossible". Community wrappers exist for several of these. They are also the thing that breaks when the vendor ships a native update, which is why the column matters to anyone planning a release schedule.

Unity face tracking: AR Foundation, ARCore, ARkit, Banuba

AR Foundation is Unity's augmented reality framework. Among its features, it exposes a face subsystem that lets the camera detect and track human faces in real time, through the AR Face Manager component, which creates an ARFace trackable for every detected face.

AR Foundation does not do the tracking itself. It delegates to a provider plug-in, and Unity's own platform-support table lists face tracking for the Google ARCore XR Plug-in, the Apple ARKit XR Plug-in and Unity OpenXR Android XR. The Apple visionOS plug-in, Microsoft HoloLens, Unity OpenXR Meta and XR Simulation are not in that list. The XR Simulation gap is the one that costs the most time in practice, because it means face tracking cannot be exercised in the Editor and every iteration needs a device build.

Each provider overlays textures and 3D models on a detected face through a face mesh. The mesh carries vertices, triangle indices, normals and texture coordinates, and the optional feature descriptors on XRFaceSubsystemDescriptor tell you at runtime which of those the current device actually produces.


ARCore face tracking Unity features

The ARCore XR Plug-in enables face tracking in Unity apps on Android through the Augmented Faces API. Google documents what you get: a 468-point 3D face mesh, a centre pose that sits inside the skull behind the nose, and three region poses on the left forehead, right forehead and tip of the nose. Region poses are reached by downcasting the ARFaceManager's subsystem to ARCoreFaceSubsystem and calling GetRegionPoses.

Two things in that documentation decide architectures. The first is that the Augmented Faces API in AR Foundation needs no ARCore Extensions package. The second is the constraint quoted above: AR Foundation targeting Android devices can only track a single face at a time.


Unity ARKit face tracking overview

The Apple ARKit face-tracking configuration recognises facial position, orientation, topology and expressions, and hands your Unity scene an ARFaceAnchor to animate against. It detects faces within 3 metres of the device's front camera.

The device requirement has changed since this article first ran and is worth restating, because the old version is still repeated widely. Apple's documentation now reads that face tracking supports devices with an Apple Neural Engine in iOS 14 and iPadOS 14, and required a TrueDepth camera only on iOS 13 and iPadOS 13 and earlier. A TrueDepth camera is therefore no longer the gate it was, and the list of supported iPhones is much wider than the iPhone X to iPhone 11 range this page used to name.

Mesh topology on ARKit is fixed across sessions. Only the vertex positions change as the mesh adapts to the user's face, and the triangle count is exposed at runtime through triangleCount rather than published as a number, so build your asset budget against the device, not against a figure from a blog post.

Face mesh density and polygon budgets in Unity face tracking

This is the question most Unity teams arrive with, and it has two halves that get conflated.

The first half is the tracker's own mesh, which you do not control. It is a vendor decision. ARCore in AR Foundation gives 468 mesh points. Banuba's face tracking software detects 68 facial anchor points and builds a 3D mesh of up to 3,308 vertices, with 37 mesh morphs on top. More mesh is not automatically better: 468 points are ample for sitting a pair of glasses or a hat on a face, and the density only starts to pay for itself when the effect deforms the face itself, which is why beauty retouch, face morphing, and makeup are where the gap shows.

The second half is your own content budget, which you do control and which no vendor can set for you. The triangle count your attachments can afford depends on the handsets you actually ship to, how many draw calls the rest of the scene already spends, and how long a session runs before the device throttles. Published "safe" polygon numbers for mobile AR circulate widely and none of them come from Unity, Apple or Google, so the honest answer is to measure: build the scene, run it on the cheapest handset in your target list, and watch the frame time and the device temperature over a few minutes rather than a few seconds. Performance optimization for mobile AR face tracking starts with that measurement, not with a target number copied from somewhere else, because the budget moves with the handset, the shader count, and the session length.

What a vendor can give you is a floor to measure against. Banuba's SDK documents a minimum of 30 FPS at a recommended 1280x720 camera resolution, with all tracking and rendering done on the device. A 14-day trial token exists precisely so that number can be checked on your own handsets and your own effects before a licence is signed.

Face AR plugin for Unity

To bring face AR to Unity cross-platform, Banuba provides the Unity face tracking plugin, which handles face detection and tracking inside Unity3D. It supports realistic face filters, 3D lenses, facial animation, and AR background effects.

Banuba Face AR SDK for Unity ships as a native library compiled for Windows, macOS, iOS, and Android. The asset package is imported through the Unity Package Manager, the client token goes into Assets/Resources/BanubaClientToken.txt, and the bundled demo scene runs from there. Banuba's documentation gives a minimum Unity Editor version of 2019.3.13f1 and asks for the Unity platform plugin for each target you build.

Face AR for Unity overview

Where Banuba differs from AR Foundation in Unity

AR Foundation is the best option in its category, and the category is free native face AR on one mobile platform at a time. It is maintained by Unity, it costs nothing, it ships with the engine, and for an iOS-only or Android-only app with overlay effects there is no argument for paying for anything else.

The one case where Banuba's Unity plugin is the stronger choice is narrow and worth stating plainly: a single Unity project that has to ship the same face AR, with morph-grade mesh density, to phones and to Windows and macOS desktops, with every frame staying on the device. The differences below are what that comes down to.


1. Desktop coverage from one Unity project

The ARKit and ARCore plug-ins cover iOS and Android. AR Foundation's face subsystem is not listed as supported on any desktop or headset provider plug-in. Banuba Face AR SDK for Unity is compiled for Windows and macOS as well as iOS and Android, so a desktop build of the same project keeps its face AR instead of losing it.

Note what this is not. Browser face AR is not part of the Unity plugin: Banuba serves the web through a separate Web SDK that needs WebGL 2.0, and an earlier version of this article wrongly listed the web as a Unity platform.


2. Device requirements, stated both ways

This one is a trade rather than an advantage, and the honest numbers matter more than the pitch. Banuba Face AR SDK requires Android 8.0, API level 26, with OpenGL ES 3.0, and iOS 13 or later. ARCore requires Android 7.0 or newer plus an ARCore-certified device and the Google Play Services for AR package. So Banuba sits on a higher Android OS floor, while ARCore adds a device-certification and a Play Services dependency that Banuba does not have. Banuba states coverage of 97% of Apple smartphones and 80% of Android ones from a single cross-platform integration.


3. Multi-face tracking

Google's own guide limits AR Foundation on Android to one tracked face at a time. If two people have to be in frame, that is a blocker rather than a preference, and it is the clearest functional difference on this list.


4. Face filter assets included

Banuba imported a set of its face filters into Unity, and over 1,000 AR face filters can be licensed from the asset store, with the same assets usable as templates for custom effects. Beards, AR hairstyles, animation, beauty effects and virtual try-on for glasses, hats or jewellery are all in that library. AR Foundation ships no content; the mesh is yours to populate.


5. Background segmentation

Banuba background segmentation in Unity

Banuba's Business version supports background segmentation in Unity, so users can remove or replace a background in real time without a green screen, using images, animated wallpapers, or video. Neural-network segmentation is a separate capability from face tracking, and AR Foundation's face subsystem does not provide it.


6. Mesh density for morph-grade effects

ARCore's 468 mesh points against Banuba's up to 3,308 vertices and 37 mesh morphs is the difference between placing something on a face and changing the face. If the roadmap includes beautification, reshaping, or makeup, this is the line that decides it. If it does not, it is not worth paying for.


7. A tracker built only for faces

Banuba develops and optimises its tracking for mobile face AR specifically, which is also why it carries figures AR Foundation does not publish: tracking holds across the -80° to +80° head-angle range, under up to 70% occlusion, and at distances up to 3.7 metres, against the 3 metres Apple documents for its front-camera face configuration. AR Foundation is a general AR framework in which faces are one subsystem among planes, images, bodies and meshes.

If the target is Android specifically, we ran the same comparison on that platform alone in 3D face tracking for Android, Banuba against ARCore, and the wider market view sits in best facial tracking software. For the Unity-specific how-to steps, see implementing Unity camera filters in 3 steps and Unity face beautification.

References

Apple Inc. (n.d.) ARFaceGeometry triangleIndices. Apple Developer Documentation. https://developer.apple.com/documentation/arkit/arfacegeometry/triangleindices-3tb1o

Apple Inc. (n.d.) ARFaceTrackingConfiguration. Apple Developer Documentation. https://developer.apple.com/documentation/arkit/arfacetrackingconfiguration

Banuba (n.d.) Banuba Face AR SDK for Unity: basic integration. Banuba documentation. https://docs.banuba.com/far-sdk/tutorials/unity/basic_integration/

Banuba (n.d.) Face Filters SDK. Banuba. https://www.banuba.com/facear-sdk/face-filters

BytePlus (n.d.) Technical requirements, Effects SDK. BytePlus documentation. https://docs.byteplus.com/en/docs/effects/docs-technical-requirements

DeepAR (n.d.) SDK features. DeepAR documentation. https://docs.deepar.ai/deepar-sdk/specification/sdk-features

Faceunity (n.d.) Effects. Faceunity. https://www.faceunity.com/en/effects.html

Google (n.d.) Augmented Faces developer guide for AR Foundation. ARCore documentation. https://developers.google.com/ar/develop/unity-arf/augmented-faces/developer-guide

Google (n.d.) Face Landmarker. MediaPipe documentation. https://developers.google.com/edge/mediapipe/solutions/vision/face_landmarker

Google (n.d.) ML Kit guides. Google for Developers. https://developers.google.com/ml-kit/guides

Google (n.d.) Supported devices. ARCore documentation. https://developers.google.com/ar/devices

OpenCV (n.d.) License. OpenCV. https://opencv.org/license/

Snap Inc. (n.d.) What is Camera Kit. Snap Developer Documentation. https://developers.snap.com/camera-kit/getting-started/what-is-camera-kit

Unity Technologies (2025) Face tracking. AR Foundation 6.1 manual. https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@6.1/manual/features/face-tracking.html

Unity Technologies (2025) Face tracking platform support. AR Foundation 6.1 manual. https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@6.1/manual/features/face-tracking/platform-support.html

Visage Technologies (n.d.) Visage SDK. Visage Technologies. https://visagetechnologies.com/visage-sdk/

Zappar (n.d.) Platform support, Universal AR for Unity. Zapworks documentation. https://docs.zap.works/universal-ar/unity/platform-support/

Building cross-platform AR apps in Unity? Discover Face AR SDK  possibilities.

Start Free Trial

FAQ
  • Install the AR Foundation package, com.unity.xr.arfoundation, plus the provider plug-in for your target, Apple ARKit XR for iOS or Google ARCore XR for Android, then add an AR Face Manager component to a game object, and give it a face prefab that carries an AR Face component. The manager raises a facesChanged event once per frame with the faces added, updated and removed, and the AR Face component exposes vertices, indices, normals and texture coordinates. Face tracking is not available in XR Simulation, so every iteration needs a device build; teams that also want the same scene to run on Windows or macOS use a native plugin such as the Banuba Face AR SDK for Unity instead.
  • Unity's AR Foundation 6.1 documentation lists face tracking support for three provider plug-ins: Google ARCore XR, Apple ARKit XR and Unity OpenXR Android XR. Beyond those, a Unity team can license a plugin that brings its own tracker, and of the thirteen face AR vendors in the comparison above, seven publish a Unity integration path, including Banuba, Visage Technologies, Zappar and Faceunity. Banuba's own Unity package is documented in the Banuba Face AR SDK Unity integration guide.
  • Neither Unity, Apple nor Google publishes a minimum or maximum polygon count for face-tracked models, so any single number you see quoted is someone's rule of thumb rather than a platform requirement. The tracker's mesh and your content budget are separate things: ARCore supplies a 468-point face mesh, Banuba Face AR SDK builds a mesh of up to 3,308 vertices with 37 mesh morphs, and your own attachments are budgeted against the lowest-end handset you ship to. Banuba documents a minimum of 30 FPS at a recommended 1280x720 camera resolution, and the Banuba Face AR SDK free trial runs for 14 days so you can measure that against your own effects before committing.
  • Google's Augmented Faces guide for AR Foundation states that AR Foundation targeting Android devices can only track a single face at a time, whatever the Maximum Face Count field on the AR Face Manager is set to. If your effect needs two or more faces in frame on Android, you need a tracker that supports it, which is one of the reasons teams building group filters move to a licensed plugin such as Banuba's face filters SDK.
  • No, and the distinction decides which product you need. Face tracking locates a face and follows its geometry frame by frame without identifying anyone, which is what AR Foundation's face subsystem and the Banuba Face AR SDK for Unity both do. Face recognition matches a face against a known identity, which is a different pipeline with different privacy obligations; Google's own documentation makes the same point about ML Kit, noting that the API detects faces and does not recognize people. If identity matching rather than AR is the goal, that sits with Banuba Face API rather than with a Unity AR plugin.
  • The official technical documentation for Banuba Face AR SDK is available online and includes requirements, setup instructions, and configuration details:

    This Banuba Face AR SDK documentation should be your primary reference during integration.

  • You can access official integration code samples for the Banuba Face AR SDK on GitHub. Banuba provides platform-specific examples to help you integrate faster:

    These Banuba Face AR SDK repositories include setup instructions and minimal working examples for quick deployment.

  • Yes. The Banuba Face AR SDK includes an LLM-friendly documentation file designed for AI-assisted development and internal knowledge systems:

    This structured Banuba Face AR SDK text file can be used with AI tools to streamline onboarding and developer workflows.

  • The Banuba Face AR SDK provides official cross-platform plugins to simplify integration into hybrid applications:

    These Banuba Face AR SDK plugins are maintained by Banuba and support faster implementation for cross-platform apps.

Top
# Tags: