PackageTrack
Sign in Get early access

uuid

RFC4122 (v1, v4, v5, v6, v7, v8) UUID Generator and Parser for Dart

4.6.0 1000K downloads/mo #3 most downloaded on pub.dev Daegalus/dart-uuid

What this package is like to depend on

Last release 1 months ago

15 Jul 2026

Release timing varies

gaps range from 4 weeks to 1.1 years

Nearly every release is documented

notes for 59 of 61 stable releases

Nothing withdrawn

no release was ever pulled

14 years old

69 releases · first in 2012

3 releases in the last 12 months

see the full history below

Release timeline

69 releases · Oct 2012 to Jul 2026
2013 2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 60 of 69
  1. 4.6.0 15 Jul 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 4.5.3...4.6.0

    Open source →
    Release notes
    • Add explicit 128-bit hexadecimal format validators: Uuid.isValidUUIDFormat(...), UuidValue.validateFormat(), UuidValidation.isValidUUIDFormat(...), and UuidValidation.isValidFormatOrThrow(...). (thanks @DPDmancul)
    • Add UuidValue.withFormatValidation(...) for values whose UUID version and variant bits should not be checked. (thanks @DPDmancul)
    • Add Uuid.parseHex128(...), Uuid.parseHex128AsByteList(...), UuidParsing.parseHex128(...), and UuidParsing.parseHex128AsByteList(...). (thanks @DPDmancul)
    • Require exact single-line 8-4-4-4-12 or 32-character hexadecimal input and exactly 16 bytes during format validation.
    • Expose the existing noDashes parsing option through the public Uuid parse methods.
    Open source →
  2. 4.5.3 21 Feb 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 4.5.2...4.5.3

    Open source →
    Release notes
    • Remove experimental flag on UUIDValue and remote meta dependency. (thanks @marcelomendoncasoares)
    • Add binary support to UUIDv5 (thanks @ljanecek)
    Open source →
  3. 4.5.2 03 Nov 2025
    Release notes

    What's Changed

    • Fix validation to allow MAX UUID (FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF) as it is valid.
    • Add strictRFC9562 and deprecate strictRFC4122 to facilitate a rename. This will be remove in v5
    • Remove sprintf dependency by @julemand101 in #132
    • Add const constructor to CryptoRNG class by @4akloon in #134
    • update docs for v5 by @JarvanMo in #136
    • Update All (major) by @renovate[bot] in #129

    New Contributors

    Full Changelog: 4.5.1...4.5.2

    Open source →
    Release notes
    • Fix validation to allow MAX UUID (FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF) as it is valid.
    • Add strictRFC9562 and deprecate strictRFC4122 to facilitate a rename. This will be remove in v5
    Open source →
  4. 4.5.1 26 Sep 2024
    Release notes

    Changelog

    • Add UuidValue.fromNamespace to let you make constant variants of the namespace, as due to language limitations on Enums, Namespace.*.uuidValue can't be constant.
    • Added isV#(), isNil(), and isMax() functions to UuidValue for matching Dart standards.

    Full Changelog: 4.5.0...4.5.1

    Open source →
    Release notes
    • Add UuidValue.fromNamespace to let you make constant variants of the namespace, as due to language limitations on Enums, Namespace.*.uuidValue can't be constant.
    • Added isV#(), isNil(), and isMax() functions to UuidValue for matching Dart standards.
    Open source →
  5. 4.5.0 30 Aug 2024
    Release notes

    Changelog

    • Change to CryptoRNG by default, you will now need to use MathRNG explicitly if you want speed over security. (thanks @Rexios80)
    • Deprecate the use of Uuid.NAMESPACE* and UuidV5.NAMESPACE, and switch to using a proper const enum for this. (thanks @bymoye)
      • These will be removed once sufficient time has been made for the deprecation notice to be seen. Most likely v5.0.
      • Please use the new Namespace enum in enums.dart.
    • Re-add Uuid.NAMESPACE* and UuidV5.NAMESPACE in order to give deprecation time.
    • Add missing MAX UUID option from RFC9562
    • Add bytes getter to Namespace enum.
    • [PARTIAL BREAKING CHANGE] Namespace is now an enum, and the entries are now of the Namespace type. They all have a value function to return the internal string

    What's Changed

    • remove multiple individually defined Namespaces and use enumerations instead by @bymoye in #122
    • Always use CryptoRNG as the default by @Rexios80 in #126

    New Contributors

    Full Changelog: 4.4.2...4.5.0

    Open source →
    Release notes
    • Change to CryptoRNG by default, you will now need to use MathRNG explicitly if you want speed over security. (thanks @Rexios80)
    • Deprecate the use of Uuid.NAMESPACE* and UuidV5.NAMESPACE, and switch to using a proper const enum for this. (thanks @bymoye)
      • These will be removed once sufficient time has been made for the deprecation notice to be seen. Most likely v5.0.
      • Please use the new Namespace enum in enums.dart.
      • These will be removed in v5
    • Re-add Uuid.NAMESPACE* and UuidV5.NAMESPACE in order to give deprecation time.
    • Add missing MAX UUID option from RFC9562
    • Add bytes getter to Namespace enum.
    • [PARTIAL BREAKING CHANGE] Namespace is now an enum, and the entries are now of the Namespace type. They all have a value function to return the internal string
    Open source →
  6. 4.4.2 11 Jul 2024
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 4.4.1...4.4.2

    Open source →
    Release notes
    • Revert meta depenency version upgrade, was breaking flutter_test. (thanks @techouse)
    Open source →
  7. 4.4.1 10 Jul 2024
    Release notes

    v4.4.1

    • Fix UUIDv1 to use millisecondsSinceEpoch instead of microsecondsSinceEpoch. Matches UUIDv6 and passes vector tests. (#119)

    What's Changed

    New Contributors

    Full Changelog: 4.4.0...4.4.1

    Open source →
    Release notes
    • Fix UUIDv1 to use millisecondsSinceEpoch instead of microsecondsSinceEpoch. Matches UUIDv6 and passes vector tests.
    Open source →
  8. 4.4.0 08 Apr 2024
    Release notes
    • Fix MathRNG with Seed being recreated on each use, generating the same list of bytes. (thanks @showband)
    • Fix UUIDv5 UTF8 inconsistencies. (thanks @vjamrich)
    • Use static state storage for random number generator to prevent MathRNG issue.
    • Replace V1, v6, V7, V8 MathRNG preventively, the issue didn't exhibit there due to other factors in the UUID generation (primarily time, and clockseq)

    What's Changed

    • fixed MathRNG - it now uses the initial seed properly by @showband in #109
    • Fix V5 UUID inconsistencies when using UTF-8 characters by @vjamrich in #112

    New Contributors

    • @showband made their first contribution in #109
    • @vjamrich made their first contribution in #112

    Full Changelog: 4.3.3...4.4.0

    Open source →
    Release notes
    • Fix MathRNG with Seed being recreated on each use, generating the same list of bytes. (thanks @showband)
    • Fix UUIDv5 UTF8 inconsistencies. (thanks @vjamrich)
    • Use static state storage for random number generator to prevent MathRNG issue.
    • Replace V1, v6, V7, V8 MathRNG preventively, the issue didn't exhibit there due to other factors in the UUID generation (primarily time, and clockseq)
    Open source →
  9. 4.3.3 11 Jan 2024
    Release notes

    v4.3.3

    • Fix UUIDv7 in Javascript
      • Using bitshifts on anything over 32bits get truncated. Switched to a more naive solution for now. Hopefully dart2wasm fixes things.
    • Remove unnecessary _randomData() functions
    • Add fixnum package to handle issues in v6, time, and javascript.

    Full Changelog: 4.3.2...4.3.3

    Open source →
    Release notes
    • Fix UUIDv7 in Javascript
      • Using bitshifts on anything over 32bits get truncated. Switched to a more naive solution for now. Hopefully dart2wasm fixes things.
    • Remove unnecessary _randomData() functions
    • Add fixnum package to handle issues in v6, time, and javascript.
    Open source →
  10. 4.3.2 10 Jan 2024
    Release notes
    • Added toFormattedString() to UuidValue to handle cases where the UUID used has no hyphens but you wnt them for output.
    • Changed constraint for meta to 1.10.0 to not conflict with flutter_test

    Full Changelog: 4.3.1...4.3.2

    Open source →
    Release notes
    • Added toFormattedString() to UuidValue to handle cases where the UUID used has no hyphens but you wnt them for output.
    • Changed constraint for meta to 1.10.0 to not conflict with flutter_test
    Open source →
  11. 4.3.1 12 Dec 2023
    Release notes
    • Add additional optional parameters for parseing and validation for the new noDashes flag.
    Open source →
  12. 4.3.0 12 Dec 2023
    Release notes
    • Update SDK constraints to >= 3.0.0
    • Update Meta package to 1.11.0
    • [PARTIAL BREAKING CHANGE] Changing MathRNG implementation to use 4 nextints, instead of 16 for optimization to match CryptoRNG. This will affect regenerating the same UUID from the same seed.
      • If you need the old behavior, please use MathRNGDeprecated() instead.
    Open source →
  13. 4.2.2 12 Dec 2023
    Release notes
    • Fix CryptoRNG on Web generating a random number 0 always
    • Add NoDashes support to the validator so that it validates UUIDs that don't have dashes but are otherwise valid.
    Open source →
  14. 4.2.1 07 Nov 2023
    Release notes
    • Lower meta dependency to 1.9.1 so that it is compatible with Flutter Stable 3.13
    Open source →
  15. 4.2.0 06 Nov 2023
    Release notes
    • [BREAKING CHANGE] Deprecate default/empty UuidValue constructor because it has a different behavior from the 3.x package version. (Thanks @davidmartos96)
      • Use UuidValue.fromString() instead, which has the same behavior. If you need to define a const UuidValue you can use UuidValue.raw(), but making sure the value is lowercase.
    • Mark UuidValue as experimental with an annotation. (Thanks @Kaival-Patel)
    Open source →
  16. 4.1.0 25 Sep 2023
    Release notes
    • [BREAKING CHANGE] In order to enforce lowercase strings in UuidValue, I have made the default const constructor private, and added a fromString factory constructor. Please migrate any direct UuidValue() usage to UuidValue.fromString() or UuidValue.withValidation().
    Open source →
  17. 4.0.0 30 Aug 2023
    Release notes
    • toBytes on UuidValue now does not validate by default, but has the option validate that can be set to true if you need validation when calling it. (Thanks @Erhannis)
    Open source →
  18. 4.0.0-beta3-1 06 Apr 2023 pre-release

    Nothing published for this version

  19. 4.0.0-beta3 05 Apr 2023 pre-release
    Release notes
    • [BREAKING CHANGE] Replacing UuidUtil rng functions with RNG classes.
      • UuidUtil.mathRNG() is replaced with MathRNG().generate().
      • UuidUtil.cryptoRNG() is replaced with CryptoRNG().generate().
      • Custom crypto implementations just need to implement the RNG abstract class.
      • namedArgs and positionalArgs have been removed from GlobalOptions
      • You may use LegacyRNG() if you need to use the old function style RNG.
    • Fix a bug with the usage of Uint64List in Dart2js by not using it. (Thanks @hambergerpls)
    Open source →
  20. 4.0.0-beta2 31 Mar 2023 pre-release
    Release notes
    • [BREAKING CHANGE] The Uuid class now takes a GlobalOptions class instead of a Map<String, dynamic>.
    • Added options classes to eventually replace the Map parameter.
    • [BREAKING CHANGE] Since v6,v7,v8 are new for 4.0, I have made it so they only take the new options class.
    • Reworked the constructors, and moved state out of the classes. Const is now supported properly again
    • Switched tests to use const Uuid to catch regressions.
    • Set the options parameter in v1, v4, and v5 to deprecated.
    • [BREAKING CHANGE] Make UuidValue properly const also
      • Can no longer run validation on the const variant.
      • Added UuidValue.withValidation() to handle this usecase, it can't be const.
      • If you need const and validation. Create the UuidValue with the UUID, then call the validate() function on it.
    Open source →
  21. 4.0.0-beta1-1 13 Nov 2022 pre-release

    Nothing published for this version

  22. 4.0.0-beta1 13 Nov 2022 pre-release
    Release notes
    • Break up versions into individual objects that can be used standalone.
    • No more colliding global states between versions
    • Added UUID v6, v7, v8 from the new RFC.
    • Add time, version, and variant functions to UuidValue
    Open source →
  23. 3.0.7 13 Nov 2022
    Release notes
    • Fixed parse to allow buffers larger than 16 bytes to be used. [Thanks @hoylen]
    Open source →
  24. 3.0.6 19 Feb 2022
    Release notes
    • Enable avoid_dynamic_calls linting and fix appropriately. (Thanks @devoncarew)
    Open source →
  25. 3.0.5 05 Oct 2021
    Release notes
    • Global options were incorrectly being ignored. #76 (Thanks @Skycoder42)
    • V4 Global Options were incorrectly named. #76 (Thanks @Skycoder42)
    • Global state was static, not per instance. #76 (Thanks @Skycoder42)
    • Additional tests to make sure the above doesn't regress. #76 (Thanks @Skycoder42)
    Open source →
  26. 3.0.4 07 Apr 2021
    Release notes
    • isValidUUID now handles some Microsoft GUIDs better that only deviate in the Variant setting. (Thanks @FluentChange)
    • Improve error output so that it better explains how to handle the above change in your code if you encounter it. (Thanks @FluentChange)
    • Improve validation logic to better handle multiple validation cases, error output, and feedback to developers. (Thanks @FluentChange)
    Open source →
  27. 3.0.3 28 Mar 2021
    Release notes
    • [Experimental] Fixed UuidValue to properly check things are valid. (Thanks @FlorianUlivi)
    • [Experimental] Added new constructors fromByteList and fromList to UuidValue
    • [Experimental] Added == operator override and hashcode override. (Thanks @giorgiofran for suggestion)
    • Added parseAsByteList to offer a direct output to Uint8List
    • [Experimental][BREAKING CHANGE] Change toBytes in UuidValue to return Uint8List instead of List<int>
    • [Experimental][BREAKING CHANGE] isValidUuid function signature has changed, now takes 2 optional parameters fromString and fromList that will do the appropriate validation on different sources.
    Open source →
  28. 3.0.2 22 Mar 2021
    Release notes
    • [Experimental] Add flags to UuidValue constructor and parse to disable validation of the UUID, primarily to allow Microsoft GUIDs to not break things.
    Open source →
  29. 3.0.1 01 Mar 2021
    Release notes
    • Fix RNG to not need shuffling and improve performance/memory usage (Thanks @julemand101)
    Open source →
  30. 3.0.0 22 Feb 2021
    Release notes
    • Release nullsafety version.
    Open source →
  31. 3.0.0-nullsafety.1 14 Feb 2021 pre-release
    Release notes
    • [BREAKING CHANGE] Changed parse() to throw a FormatException instead of returning NIL uuids or partially handled UUIDs.
    • Changed Uuid constructor to be constant, and adjusted all the code accordingly.
    • New isValidUUID function for validating UUIDs.
    • [BREAKING CHANGE] parse and unparse are now static functions.
    • [Exprimental] Object version of the UUID instead of a string or list of bytes.
    Open source →
  32. 3.0.0-nullsafety.0 21 Jan 2021 pre-release
    Release notes
    • Migrate package to null-safety, increase minimum SDK version to 2.12 (Thanks @simolus3)

    v2.2.1 & v2.2.2

    • Update pedantic analyzer options, fix linting issues, and increase SDK minimium to 2.2 to support set literals
    Open source →
  33. 2.2.2 28 Aug 2020

    Nothing published for this version

  34. 2.2.1 28 Aug 2020

    Nothing published for this version

  35. 2.2.0 03 Jul 2020
    Release notes
    • fix v1 clock high to properly ignore c and d variants. (fixes #47)
    • update example
    Open source →
  36. 2.1.0 13 Jun 2020
    Release notes
    • Shuffle mathRNG bytes so that they don't generate duplicates. Will affect codes generated by a static seed.
    Open source →
  37. 2.0.4 14 Nov 2019
    Release notes
    • Remove new keyword where not needed. (forgot to rerun before releasing 2.0.3)
    Open source →
  38. 2.0.3 14 Nov 2019
    Release notes
    • Do some analyzer fixes and formatting/renaming.
    Open source →
  39. 2.0.2 14 Jun 2019
    Release notes
    • Merge fix for time precision loss in V1 time based UUIDs.
    Open source →
  40. 2.0.1 03 Apr 2019
    Release notes
    • Fix regression where CryptoRNG was default, moved back to MathRNG
    • Added ability to set RNG globally to skip having to set it in every function call
    • Allows you to set the v1 clock sequence, nodeID, and seed bytes to use cryptoRNG separately from globalRNG.
    Open source →
  41. 2.0.0 06 Feb 2019
    Release notes
    • Fixup the API to split out Buffer and Non-buffer usages.
    • Switch to build in Random.secure() and remove custom AES implementation.
    • Less dependencies.
    • Docs
    • Cleanup
    Open source →
  42. 2.0.0-rc1 08 Dec 2018 pre-release

    Nothing published for this version

  43. 1.0.3 07 Aug 2018
    Release notes
    • Fix SDK constraints to allow Dart 2.0 stable.
    Open source →
  44. 1.0.2 03 Aug 2018
    Release notes
    • Fix constants breaking in Dart 1.x, need to be backwards compatible.
    Open source →
  45. 1.0.1 12 Jul 2018
    Release notes
    • Fix constants to match Dart 2.0 spec
    Open source →
  46. 1.0.0 10 Apr 2018
    Release notes
    • Cleanup and prep for dart 2.0
    • Has been stable for a long time, upgrading to 1.0 version
    Open source →
  47. 0.5.3 04 Jun 2016
    Release notes
    • Merged pull request to support crypto 2.0.0
    • Support convert 2.0.0
    Open source →
  48. 0.5.2 11 Apr 2016
    Release notes
    • Merged pull request to upgrade crypto library to 1.0.0.
    Open source →
  49. 0.5.1 31 Mar 2016
    Release notes
    • Merged pull request for various updates and cleanup.
    Open source →
  50. 0.5.0 31 Dec 2014
    Release notes
    • Reverted back to custom AES implementation. Moved RNG methods to UuidUtil (import 'package:uuid/uuid_util.dart')
    • Fixed a potential bug with custom RNG method passing and added more ways to pass in custom RNG functions.
    • Cleaned up and refactored some stuff. Using only v1 is only 67kb of js, Using only v4 is 97kb. Using crypt v4 is 118kb. Using both v1 and non-crypto v4 is 126kb.
    • Default RNG for v4 is now the mathRNG function. If you wish to use cryptoRNG, import UuidUtil and pass in cryptoRNG.
    • Updated README.md with more examples and usages.
    • Updated Tests.
    Open source →
  51. 0.4.1 29 Sep 2014
    Release notes
    • Changed initCipher location so that if you ever only use v1 UUIDs, you will get a very small Dart2JS output compared to v4 or v5 that do load it.
    Open source →
  52. 0.4.0 14 Aug 2014
    Release notes
    • Use Cipher base.dart, as I don't need entropy generators, and this allows me to merge client/server together again and fix many issues this caused.
    Open source →
  53. 0.3.2 20 Apr 2014
    Release notes
    • Fix import/library bug.
    Open source →
  54. 0.3.1 11 Apr 2014
    Release notes
    • Update pubspec to allow installation of the latest Cipher 0.7.
    Open source →
  55. 0.3.0 27 Feb 2014
    Release notes
    • Updated to latest Cipher at 0.6.0. This created a breaking change in the imports. Please make sure you update your code.
    • Fixed problem when creating v4 UUIDs too fast, it would create duplicate UUIDs.
    Open source →
  56. 0.2.2 19 Jan 2014
    Release notes
    • Pegging cipher to 0.4.0 temporarily for browser support
    Open source →
  57. 0.2.1 11 Nov 2013
    Release notes
    • Using new version of cipher.
    Open source →
  58. 0.2.0 09 Nov 2013
    Release notes
    • Dart 1.0 Readiness
    • Switched from custom AES to cipher package AES.
    Open source →
  59. 0.1.6 05 Jun 2013
    Release notes
    • Adjusting usage of constants.
    • Fixing tests.
    Open source →
  60. 0.1.5 05 Jun 2013
    Release notes
    • Stupid typo on import.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive