# Creating Unique Serial Numbers in Forms
**Last updated:**
11
Jan 2022
There are times you may want to generate a unique serial number for each and
every form in a project. This article discusses various workarounds on how to
create unique serial numbers using the `calculate` question-type.
## Approach 1: Creating Sequential Unique Serial Numbers Based on Date and Time
This method works best with [Enketo web forms](data_through_webforms.md). It
uses a calculation function to create a unique serial number based on the date
and time to the first millisecond. Although this method may not meet all your
needs, it should give you an illustration of how much you can stretch calculate
functions.
Create a
calculate
question type in either the formbuilder or **XLSForm** and use the formula
below.
```
concat(substr(today(), 0, 4), substr(today(), 7, 5), substr(today(), 10, 8), substr(now(), 13, 11), substr(now(), 16, 14), substr(now(), 19, 17))
```
The same formula can work as an integer
question when working in
an XLSForm.
![Calculate example](/images/unique_serial_numbers/calculate_example.png)
In the example, when you preview the deployed form in **Enketo**, you should be
able to see the serial number within the note question as shown in the image
below:
![Preview form](/images/unique_serial_numbers/preview_form.png)
## Approach 2: Creating Unique Serial Numbers from Selected Variables
This example shows how to create unique serial numbers from existing, already
defined variables in your form by using the
[`concat()`](https://docs.getodk.org/form-operators-functions/#concat)
expression in a `calculate` question type. The example is shown as an
**XLSForm**, but can just as easily be done within the formbuilder.
**survey**
| type | name | label | calculation |
| :-------- | :------ | :------------------------------------- | :-------------------------------------------------------------------- |
| text | Q1 | Region Name | |
| text | Q2 | District Name | |
| text | Q3 | Cluster Name | |
| text | Q4 | Village Name | |
| text | Q5 | Household Serial Number | |
| calculate | Q1_C | | substr(${Q1}, 0, 3) |
| calculate | Q2_C | | substr(${Q2}, 0, 3) |
| calculate | Q3_C | | substr(${Q3}, 0, 3) |
| calculate | Q4_C | | substr(${Q4}, 0, 3) |
| calculate | ID | | concat(${Q1_C}, '-', ${Q2_C}, '-', ${Q3_C}, '-', ${Q4_C}, '-', ${Q5}) |
| note | note_id | Your Unique ID for this form is: ${ID} | |
When you preview the example in **Enketo** web forms, the serial number will be
presented within the note question as shown in the image below:
![Preview unique id](/images/unique_serial_numbers/preview_uniqueid.png)