Core library for the syntax in the AT Protocol standard 🦋

GitHub Sponsor GitHub Sponsor

pub package Dart SDK Version Test/Analyzer codecov Issues Pull Requests Stars Contributors Last Commits License Contributor Covenant

1. Guide 🌎

This library provides the easiest way to validate identifiers supported by AT Protocol in Dart and Flutter apps.

Give a ⭐ on GitHub repository and follow on Bluesky!

1.1. Getting Started ⚡

1.1.1. Install Library

With Dart:

 dart pub add at_identifier

Or With Flutter:

 flutter pub add at_identifier

1.1.2. Import

import 'package:at_identifier/at_identifier.dart';

1.1.3. Implementation

import 'package:at_identifier/at_identifier.dart' as identifier;

void main(List<String> args) {
  identifier.isValidHandle('alice.test'); // returns true
  identifier.ensureValidHandle('alice.test'); // returns void

  identifier.isValidHandle('al!ce.test'); // returns false
  identifier.ensureValidHandle('al!ce.test'); // throws

  identifier.ensureValidDid('did:method:val'); // returns void
  identifier.ensureValidDid(':did:method:val'); // throws

1.2. Contribution 🏆

If you would like to contribute to at_identifier, please create an issue or create a Pull Request.

There are many ways to contribute to the OSS. For example, the following subjects can be coat_identifierered:

  • There are request parameters or response fields that are not implemented.
  • Documentation is outdated or incomplete.
  • Have a better way or idea to achieve the functionality.
  • etc...

You can see more details from resources below:

Or you can create a discussion if you like.

Feel free to join this development, diverse opinions make software better!

1.3. Support ❤️

The simplest way to show us your support is by giving the project a star at GitHub and

You can also support this project by becoming a sponsor on GitHub:


You can also show on your repository that your app is made with at_identifier by using one of the following badges:

Powered by at_identifier Powered by at_identifier Powered by at_identifier

[![Powered by at_identifier](](
[![Powered by at_identifier](](
[![Powered by at_identifier](](

1.4. License 🔑

All resources of at_identifier is provided under the BSD-3 license.

Copyright 2023 Shinya Kato. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided the conditions.

License notices in the source are strictly validated based on .github/header-checker-lint.yml. Please check header-checker-lint.yml for the permitted standards.

1.5. More Information 🧐

at_identifier was designed and implemented by Shinya Kato (@myConsciousness).