# How to upload your submission to the IOCCC

**IMPORTANT NOTE**: The [IOCCC submit server](https://submit.ioccc.org)
is only ready for submissions
**ONLY WHEN THE CONTEST IS [open](../faq.html#open)**.

See [current status of the IOCCC](../status.html) for details on the contest status.
**IMPORTANT NOTE**: When the contest is [closed](../faq.html#closed), the
[IOCCC submit server](https://submit.ioccc.org)
might be offline and unreachable as a website.

To login, open [https://submit.ioccc.org](https://submit.ioccc.org)
in your browser. Fill in your login credentials and click "Login".

**NOTE**: if the contest is NOT open you will see something like this instead:

> The contest is NOT yet open for submissions.<br>
> Sorry (tm Canada 🇨🇦), the IOCCC is not yet open.<br>
> The IOCCC is scheduled to open at 2025-03-05 23:19:17.131107 UTC.<br>
>
> Message(s):<br>
> The IOCCC is not yet open for submissions.

Assuming it is open, and if you've not logged in before, you'll have to change
your password first. See the file [pw-change.html](pw-change.html) for more
details. After that you will have to log back in.

Once you've logged in, you will see submit slots. Each slot is for one
submission so if you update a submission, make sure you choose the right one so
you do not replace the wrong one!

It will show text and radio buttons for each row (up to 10 numbered `0` through
`9`). Here is a text version of the table showing what the first few lines would
look like:

```
    | Select | Slot Information   |
    | -------| --------------------
    | 0: [●] | Status: slot empty |
    | 1: [ ] | Status: slot empty |
    | 1: [ ] | Status: slot empty |
```

The `●` is a ticked radio button whereas the `[ ]` is an unticked. Tick that to
select that slot.

Then further down the page you'll see the text along the lines
of:

> IMPORTANT: Upload only XZ compressed tarballs whose filename is:
>
>    `submit.00000000-0000-4000-0000-000000000000-SLOT.TIMESTAMP.txz`
>
> where `SLOT` is a slot number, and `TIMESTAMP` is the build time as a [Unix
timestamp](https://unixtime.org/).
>
> We highly recommend that you use `mkiocccentry(1)` to create your submit file as
it must pass the `txzchk(1)` sanity checks, and when the uncompressed tarball is
untarred, the resulting directory must pass `chksubmit(1)`.

**NOTE**: the `00000000-0000-4000-0000-000000000000` is your UUID. **MAKE SURE
YOU CHANGE IT TO YOUR UUID**!

**NOTE**: the `SLOT` and `TIMESTAMP` **in the filename** are generated based on
your input in `mkiocccentry(1)`.

Now select the slot you need and then scroll down and click the link that says:
`Choose File`. A file select option in your browser should open up. Browse for
your **XZ compressed tarball** that was **generated by `mkiocccentry(1)`** and
then click whatever button your browser has to upload the file.

You can see the filename of your **XZ compressed tarball` that was **generated
by `mkiocccentry(1)`**  you're about to upload if you mouseover it and wait
a moment; if you have made a mistake in your file selection, you may click the
link that says `Choose File` again. Fix your mistake by choosing the correct
file in the file selection pop-up in your browser.

Once you're certain you have selected the correct file, click "Submit", below
the file selection step.

When it's uploaded it should say something like:

> • Uploaded file: submit.00000000-0000-4000-0000-000000000000-5.1740838915.txz

And in the slot it will give you important details like:

- the status of the submission
- the filename, which will be in the correct format, assuming you used
`mkiocccentry(1)` which is **HIGHLY** recommended so that you do not break
[Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry)!
- the file length, which `txzchk(1)` will also verify (the file itself and the
tarball listing).
- the upload date.
- the SHA256 hash of the file.

Again the `00000000-0000-4000-0000-000000000000` is your UUID, the `SLOT` is the
slot number and `TIMESTAMP` is the build time as a [Unix
timestamp](https://unixtime.org/).

Now if you're done, log out.

If, on the other hand, you upload a file that is too big you will see something like:

> The file size of N exceeds the maximum size of 3999971.

And if you try uploading an empty file you'll instead see:

> The must not be empty.

And if you see something like:

> Filename for slot: `5` must match this regular expression: `^submit\.00000000-0000-4000-0000-000000000000-5\.[1-9][0-9]{9,}\.txz`

You uploaded the wrong filename into a slot.

For example, for the user `00000000-0000-4000-0000-000000000000`, slot `5`, a valid filename to upload would be:

> submit.00000000-0000-4000-0000-000000000000-5.1740838915.txz

where `1740838915` is a timestamp created by the `mkiocccentry(1)` tool.

You **MUST** upload a properly named XZ compressed tarball, **MAKING SURE** you
package it with `mkiocccentry`!

If, however, the slot status shows:

> **Status: file successfully uploaded into slot.**

Then you are successfully uploaded a file into the slot.

At this point you may upload another submission file into a different slot, or you're done, log out.

**Please note:** The status page will **NOT** auto-refresh.  After you are uploaded a file into a slot, **DO NOT RELOAD**
the page as this may cause your browser to needlessly reload the same file to the same slot.

After you fir finished uploading submissions into slots, please logout.
To see any status updates, you should logout and log back in later.


## Checking on the status of your submission

You may check on the status of your submission later on, after you logout by logging back in an looking at the slot status.

**Please note:** The status page will **NOT** auto-refresh.

When the system begins to process your file (which could be an hour or two later), you might see:

> **Status: file fetched. The format test is pending.**

After the format test is complete, if you see an error such as:

> **Status: submit file failed the txzchk test! Use mkiocccentry to rebuild and resubmit to this slot.**

Or:

> **Status: submit file failed the chksubmit test! Use mkiocccentry to rebuild and resubmit to this slot.**

... or **ANY** other error then you **MUST FIX** your submission, repackage your
tarball with `mkiocccentry` and upload to the same slot again! If you do not fix
this your submission **WILL BE REJECTED** for violating
[Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry)!

If the format test went well, then you will see:

> **Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.**

**IMPORTANT**: this does **NOT** mean that your submission does not violate the
rules or that everything is OK once the tarball is extracted; it simply means
the tests performed by the tools passed. If you find a flaw in a tool and
abuse it and the tests pass then you stand a significant chance of having your
submission rejected for violating
[Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry),
even if the tests passed.

For details on `txzchk`, see the
FAQ on "[txzchk](../faq.html#txzchk)".

For details on `chksubmit`, see the
FAQ on "[chksubmit](../faq.html#chksubmit)".

If you need more information on the two JSON files, see
FAQ on the [".info.json file](../faq.html#info_json)"
and the
FAQ on the "[.auth.json file](../faq.html#auth_json)".


<!--

    Copyright © 1984-2025 by Landon Curt Noll. All Rights Reserved.

    You are free to share and adapt this file under the terms of this license:

        Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)

    For more information, see:

        https://creativecommons.org/licenses/by-sa/4.0/

-->
