<!DOCTYPE html>
<!--
 *
 * Copyright 2016-present Open Networking Laboratory
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
-->
<html lang="en">
<head>
    <title>2-Letter, 3-Letter, Country Codes for All Countries in the World</title>
    <meta charset="utf-8">
    <script charset="utf-8" src="../../tp/jquery-2.1.1.min.js"></script>
</head>
<body>

<style type="text/css" scoped>
    body {
        font-family: Helvetica Neue, Helvetica, Arial, sans-serif ;
        background-color: #eef;
    }
    .mainContent {
        margin: auto;
        width: 800px;
        background-color: #ddf;
        padding: 8px;
    }

    table {
        margin: auto;
    }
    th {
        font-style: italic;
        text-align: left;
        background-color: #aad;
        color: #66c;
        padding: 4px;
    }
    td {
        padding: 4px;
    }
    td.code {
        font-family: monospace;
        font-size: 120%;
    }
    td.num {
        text-align: right;
    }
    tr:nth-child(even) {
        background-color: #dde;
    }
    tr:nth-child(odd) {
        background-color: #eef;
    }

</style>

<div class="content">
    <div class="mainContent">
        <div class="miscTxt">
            <header>
                <h1>Complete List of Country Codes </h1>
            </header>
            <p>
                The 2-letter codes shown below are supplied by the ISO
                (<i>International Organization for Standardization</i>).
                It bases its list of country names and abbreviations on
                the list of names published by the United Nations.
                The UN also uses 3-letter codes, and numerical codes
                to identify nations.
            </p>

            <table>
                <thead>
                <tr>
                    <th> Country </th>
                    <th> A2 (ISO) </th>
                    <th> A3 (UN) </th>
                    <th> NUM (UN) </th>
                </tr>
                </thead>
                <tbody id="codes-body">
                </tbody>
            </table>
        </div>
    </div>
</div>

<script type="text/javascript">

    var data = [
    [ 'Afghanistan', 'AF', 'AFG', 4 ],
    [ 'Albania', 'AL', 'ALB', 8 ],
    [ 'Algeria', 'DZ', 'DZA', 12 ],
    [ 'American Samoa', 'AS', 'ASM', 16 ],
    [ 'Andorra', 'AD', 'AND', 20 ],
    [ 'Angola', 'AO', 'AGO', 24 ],
    [ 'Anguilla', 'AI', 'AIA', 660 ],
    [ 'Antarctica', 'AQ', 'ATA', 10 ],
    [ 'Antigua and Barbuda', 'AG', 'ATG', 28 ],
    [ 'Argentina', 'AR', 'ARG', 32 ],
    [ 'Armenia', 'AM', 'ARM', 51 ],
    [ 'Aruba', 'AW', 'ABW', 533 ],
    [ 'Australia', 'AU', 'AUS', 36 ],
    [ 'Austria', 'AT', 'AUT', 40 ],
    [ 'Azerbaijan', 'AZ', 'AZE', 31 ],
    [ 'Bahamas', 'BS', 'BHS', 44 ],
    [ 'Bahrain', 'BH', 'BHR', 48 ],
    [ 'Bangladesh', 'BD', 'BGD', 50 ],
    [ 'Barbados', 'BB', 'BRB', 52 ],
    [ 'Belarus', 'BY', 'BLR', 112 ],
    [ 'Belgium', 'BE', 'BEL', 56 ],
    [ 'Belize', 'BZ', 'BLZ', 84 ],
    [ 'Benin', 'BJ', 'BEN', 204 ],
    [ 'Bermuda', 'BM', 'BMU', 60 ],
    [ 'Bhutan', 'BT', 'BTN', 64 ],
    [ 'Bolivia', 'BO', 'BOL', 68 ],
    [ 'Bonaire', 'BQ', 'BES', 535 ],
    [ 'Bosnia and Herzegovina', 'BA', 'BIH', 70 ],
    [ 'Botswana', 'BW', 'BWA', 72 ],
    [ 'Bouvet Island', 'BV', 'BVT', 74 ],
    [ 'Brazil', 'BR', 'BRA', 76 ],
    [ 'British Indian Ocean Territory', 'IO', 'IOT', 86 ],
    [ 'Brunei Darussalam', 'BN', 'BRN', 96 ],
    [ 'Bulgaria', 'BG', 'BGR', 100 ],
    [ 'Burkina Faso', 'BF', 'BFA', 854 ],
    [ 'Burundi', 'BI', 'BDI', 108 ],
    [ 'Cambodia', 'KH', 'KHM', 116 ],
    [ 'Cameroon', 'CM', 'CMR', 120 ],
    [ 'Canada', 'CA', 'CAN', 124 ],
    [ 'Cape Verde', 'CV', 'CPV', 132 ],
    [ 'Cayman Islands', 'KY', 'CYM', 136 ],
    [ 'Central African Republic', 'CF', 'CAF', 140 ],
    [ 'Chad', 'TD', 'TCD', 148 ],
    [ 'Chile', 'CL', 'CHL', 152 ],
    [ 'China', 'CN', 'CHN', 156 ],
    [ 'Christmas Island', 'CX', 'CXR', 162 ],
    [ 'Cocos (Keeling) Islands', 'CC', 'CCK', 166 ],
    [ 'Colombia', 'CO', 'COL', 170 ],
    [ 'Comoros', 'KM', 'COM', 174 ],
    [ 'Congo', 'CG', 'COG', 178 ],
    [ 'Democratic Republic of the Congo', 'CD', 'COD', 180 ],
    [ 'Cook Islands', 'CK', 'COK', 184 ],
    [ 'Costa Rica', 'CR', 'CRI', 188 ],
    [ 'Croatia', 'HR', 'HRV', 191 ],
    [ 'Cuba', 'CU', 'CUB', 192 ],
    [ 'CuraÃ§ao', 'CW', 'CUW', 531 ],
    [ 'Cyprus', 'CY', 'CYP', 196 ],
    [ 'Czech Republic', 'CZ', 'CZE', 203 ],
    [ 'CÃ´te dIvoire', 'CI', 'CIV', 384 ],
    [ 'Denmark', 'DK', 'DNK', 208 ],
    [ 'Djibouti', 'DJ', 'DJI', 262 ],
    [ 'Dominica', 'DM', 'DMA', 212 ],
    [ 'Dominican Republic', 'DO', 'DOM', 214 ],
    [ 'Ecuador', 'EC', 'ECU', 218 ],
    [ 'Egypt', 'EG', 'EGY', 818 ],
    [ 'El Salvador', 'SV', 'SLV', 222 ],
    [ 'Equatorial Guinea', 'GQ', 'GNQ', 226 ],
    [ 'Eritrea', 'ER', 'ERI', 232 ],
    [ 'Estonia', 'EE', 'EST', 233 ],
    [ 'Ethiopia', 'ET', 'ETH', 231 ],
    [ 'Falkland Islands (Malvinas)', 'FK', 'FLK', 238 ],
    [ 'Faroe Islands', 'FO', 'FRO', 234 ],
    [ 'Fiji', 'FJ', 'FJI', 242 ],
    [ 'Finland', 'FI', 'FIN', 246 ],
    [ 'France', 'FR', 'FRA', 250 ],
    [ 'French Guiana', 'GF', 'GUF', 254 ],
    [ 'French Polynesia', 'PF', 'PYF', 258 ],
    [ 'French Southern Territories', 'TF', 'ATF', 260 ],
    [ 'Gabon', 'GA', 'GAB', 266 ],
    [ 'Gambia', 'GM', 'GMB', 270 ],
    [ 'Georgia', 'GE', 'GEO', 268 ],
    [ 'Germany', 'DE', 'DEU', 276 ],
    [ 'Ghana', 'GH', 'GHA', 288 ],
    [ 'Gibraltar', 'GI', 'GIB', 292 ],
    [ 'Greece', 'GR', 'GRC', 300 ],
    [ 'Greenland', 'GL', 'GRL', 304 ],
    [ 'Grenada', 'GD', 'GRD', 308 ],
    [ 'Guadeloupe', 'GP', 'GLP', 312 ],
    [ 'Guam', 'GU', 'GUM', 316 ],
    [ 'Guatemala', 'GT', 'GTM', 320 ],
    [ 'Guernsey', 'GG', 'GGY', 831 ],
    [ 'Guinea', 'GN', 'GIN', 324 ],
    [ 'Guinea-Bissau', 'GW', 'GNB', 624 ],
    [ 'Guyana', 'GY', 'GUY', 328 ],
    [ 'Haiti', 'HT', 'HTI', 332 ],
    [ 'Heard Island and McDonald Mcdonald Islands', 'HM', 'HMD', 334 ],
    [ 'Holy See (Vatican City State)', 'VA', 'VAT', 336 ],
    [ 'Honduras', 'HN', 'HND', 340 ],
    [ 'Hong Kong', 'HK', 'HKG', 344 ],
    [ 'Hungary', 'HU', 'HUN', 348 ],
    [ 'Iceland', 'IS', 'ISL', 352 ],
    [ 'India', 'IN', 'IND', 356 ],
    [ 'Indonesia', 'ID', 'IDN', 360 ],
    [ 'Iran, Islamic Republic of', 'IR', 'IRN', 364 ],
    [ 'Iraq', 'IQ', 'IRQ', 368 ],
    [ 'Ireland', 'IE', 'IRL', 372 ],
    [ 'Isle of Man', 'IM', 'IMN', 833 ],
    [ 'Israel', 'IL', 'ISR', 376 ],
    [ 'Italy', 'IT', 'ITA', 380 ],
    [ 'Jamaica', 'JM', 'JAM', 388 ],
    [ 'Japan', 'JP', 'JPN', 392 ],
    [ 'Jersey', 'JE', 'JEY', 832 ],
    [ 'Jordan', 'JO', 'JOR', 400 ],
    [ 'Kazakhstan', 'KZ', 'KAZ', 398 ],
    [ 'Kenya', 'KE', 'KEN', 404 ],
    [ 'Kiribati', 'KI', 'KIR', 296 ],
    [ 'Korea, Democratic People\'s Republic of', 'KP', 'PRK', 408 ],
    [ 'Korea, Republic of', 'KR', 'KOR', 410 ],
    [ 'Kuwait', 'KW', 'KWT', 414 ],
    [ 'Kyrgyzstan', 'KG', 'KGZ', 417 ],
    [ 'Lao People\'s Democratic Republic', 'LA', 'LAO', 418 ],
    [ 'Latvia', 'LV', 'LVA', 428 ],
    [ 'Lebanon', 'LB', 'LBN', 422 ],
    [ 'Lesotho', 'LS', 'LSO', 426 ],
    [ 'Liberia', 'LR', 'LBR', 430 ],
    [ 'Libya', 'LY', 'LBY', 434 ],
    [ 'Liechtenstein', 'LI', 'LIE', 438 ],
    [ 'Lithuania', 'LT', 'LTU', 440 ],
    [ 'Luxembourg', 'LU', 'LUX', 442 ],
    [ 'Macao', 'MO', 'MAC', 446 ],
    [ 'Macedonia, the Former Yugoslav Republic of', 'MK', 'MKD', 807 ],
    [ 'Madagascar', 'MG', 'MDG', 450 ],
    [ 'Malawi', 'MW', 'MWI', 454 ],
    [ 'Malaysia', 'MY', 'MYS', 458 ],
    [ 'Maldives', 'MV', 'MDV', 462 ],
    [ 'Mali', 'ML', 'MLI', 466 ],
    [ 'Malta', 'MT', 'MLT', 470 ],
    [ 'Marshall Islands', 'MH', 'MHL', 584 ],
    [ 'Martinique', 'MQ', 'MTQ', 474 ],
    [ 'Mauritania', 'MR', 'MRT', 478 ],
    [ 'Mauritius', 'MU', 'MUS', 480 ],
    [ 'Mayotte', 'YT', 'MYT', 175 ],
    [ 'Mexico', 'MX', 'MEX', 484 ],
    [ 'Micronesia, Federated States of', 'FM', 'FSM', 583 ],
    [ 'Moldova, Republic of', 'MD', 'MDA', 498 ],
    [ 'Monaco', 'MC', 'MCO', 492 ],
    [ 'Mongolia', 'MN', 'MNG', 496 ],
    [ 'Montenegro', 'ME', 'MNE', 499 ],
    [ 'Montserrat', 'MS', 'MSR', 500 ],
    [ 'Morocco', 'MA', 'MAR', 504 ],
    [ 'Mozambique', 'MZ', 'MOZ', 508 ],
    [ 'Myanmar', 'MM', 'MMR', 104 ],
    [ 'Namibia', 'NA', 'NAM', 516 ],
    [ 'Nauru', 'NR', 'NRU', 520 ],
    [ 'Nepal', 'NP', 'NPL', 524 ],
    [ 'Netherlands', 'NL', 'NLD', 528 ],
    [ 'New Caledonia', 'NC', 'NCL', 540 ],
    [ 'New Zealand', 'NZ', 'NZL', 554 ],
    [ 'Nicaragua', 'NI', 'NIC', 558 ],
    [ 'Niger', 'NE', 'NER', 562 ],
    [ 'Nigeria', 'NG', 'NGA', 566 ],
    [ 'Niue', 'NU', 'NIU', 570 ],
    [ 'Norfolk Island', 'NF', 'NFK', 574 ],
    [ 'Northern Mariana Islands', 'MP', 'MNP', 580 ],
    [ 'Norway', 'NO', 'NOR', 578 ],
    [ 'Oman', 'OM', 'OMN', 512 ],
    [ 'Pakistan', 'PK', 'PAK', 586 ],
    [ 'Palau', 'PW', 'PLW', 585 ],
    [ 'Palestine, State of', 'PS', 'PSE', 275 ],
    [ 'Panama', 'PA', 'PAN', 591 ],
    [ 'Papua New Guinea', 'PG', 'PNG', 598 ],
    [ 'Paraguay', 'PY', 'PRY', 600 ],
    [ 'Peru', 'PE', 'PER', 604 ],
    [ 'Philippines', 'PH', 'PHL', 608 ],
    [ 'Pitcairn', 'PN', 'PCN', 612 ],
    [ 'Poland', 'PL', 'POL', 616 ],
    [ 'Portugal', 'PT', 'PRT', 620 ],
    [ 'Puerto Rico', 'PR', 'PRI', 630 ],
    [ 'Qatar', 'QA', 'QAT', 634 ],
    [ 'Romania', 'RO', 'ROU', 642 ],
    [ 'Russian Federation', 'RU', 'RUS', 643 ],
    [ 'Rwanda', 'RW', 'RWA', 646 ],
    [ 'Reunion', 'RE', 'REU', 638 ],
    [ 'Saint Barthalemy', 'BL', 'BLM', 652 ],
    [ 'Saint Helena', 'SH', 'SHN', 654 ],
    [ 'Saint Kitts and Nevis', 'KN', 'KNA', 659 ],
    [ 'Saint Lucia', 'LC', 'LCA', 662 ],
    [ 'Saint Martin (French part)', 'MF', 'MAF', 663 ],
    [ 'Saint Pierre and Miquelon', 'PM', 'SPM', 666 ],
    [ 'Saint Vincent and the Grenadines', 'VC', 'VCT', 670 ],
    [ 'Samoa', 'WS', 'WSM', 882 ],
    [ 'San Marino', 'SM', 'SMR', 674 ],
    [ 'Sao Tome and Principe', 'ST', 'STP', 678 ],
    [ 'Saudi Arabia', 'SA', 'SAU', 682 ],
    [ 'Senegal', 'SN', 'SEN', 686 ],
    [ 'Serbia', 'RS', 'SRB', 688 ],
    [ 'Seychelles', 'SC', 'SYC', 690 ],
    [ 'Sierra Leone', 'SL', 'SLE', 694 ],
    [ 'Singapore', 'SG', 'SGP', 702 ],
    [ 'Sint Maarten (Dutch part)', 'SX', 'SXM', 534 ],
    [ 'Slovakia', 'SK', 'SVK', 703 ],
    [ 'Slovenia', 'SI', 'SVN', 705 ],
    [ 'Solomon Islands', 'SB', 'SLB', 90 ],
    [ 'Somalia', 'SO', 'SOM', 706 ],
    [ 'South Africa', 'ZA', 'ZAF', 710 ],
    [ 'South Georgia and the South Sandwich Islands', 'GS', 'SGS', 239 ],
    [ 'South Sudan', 'SS', 'SSD', 728 ],
    [ 'Spain', 'ES', 'ESP', 724 ],
    [ 'Sri Lanka', 'LK', 'LKA', 144 ],
    [ 'Sudan', 'SD', 'SDN', 729 ],
    [ 'Suriname', 'SR', 'SUR', 740 ],
    [ 'Svalbard and Jan Mayen', 'SJ', 'SJM', 744 ],
    [ 'Swaziland', 'SZ', 'SWZ', 748 ],
    [ 'Sweden', 'SE', 'SWE', 752 ],
    [ 'Switzerland', 'CH', 'CHE', 756 ],
    [ 'Syrian Arab Republic', 'SY', 'SYR', 760 ],
    [ 'Taiwan, Province of China', 'TW', 'TWN', 158 ],
    [ 'Tajikistan', 'TJ', 'TJK', 762 ],
    [ 'United Republic of Tanzania', 'TZ', 'TZA', 834 ],
    [ 'Thailand', 'TH', 'THA', 764 ],
    [ 'Timor-Leste', 'TL', 'TLS', 626 ],
    [ 'Togo', 'TG', 'TGO', 768 ],
    [ 'Tokelau', 'TK', 'TKL', 772 ],
    [ 'Tonga', 'TO', 'TON', 776 ],
    [ 'Trinidad and Tobago', 'TT', 'TTO', 780 ],
    [ 'Tunisia', 'TN', 'TUN', 788 ],
    [ 'Turkey', 'TR', 'TUR', 792 ],
    [ 'Turkmenistan', 'TM', 'TKM', 795 ],
    [ 'Turks and Caicos Islands', 'TC', 'TCA', 796 ],
    [ 'Tuvalu', 'TV', 'TUV', 798 ],
    [ 'Uganda', 'UG', 'UGA', 800 ],
    [ 'Ukraine', 'UA', 'UKR', 804 ],
    [ 'United Arab Emirates', 'AE', 'ARE', 784 ],
    [ 'United Kingdom', 'GB', 'GBR', 826 ],
    [ 'United States', 'US', 'USA', 840 ],
    [ 'United States Minor Outlying Islands', 'UM', 'UMI', 581 ],
    [ 'Uruguay', 'UY', 'URY', 858 ],
    [ 'Uzbekistan', 'UZ', 'UZB', 860 ],
    [ 'Vanuatu', 'VU', 'VUT', 548 ],
    [ 'Venezuela', 'VE', 'VEN', 862 ],
    [ 'Viet Nam', 'VN', 'VNM', 704 ],
    [ 'British Virgin Islands', 'VG', 'VGB', 92 ],
    [ 'US Virgin Islands', 'VI', 'VIR', 850 ],
    [ 'Wallis and Futuna', 'WF', 'WLF', 876 ],
    [ 'Western Sahara', 'EH', 'ESH', 732 ],
    [ 'Yemen', 'YE', 'YEM', 887 ],
    [ 'Zambia', 'ZM', 'ZMB', 894 ],
    [ 'Zimbabwe', 'ZW', 'ZWE', 716 ],
    [ 'Aland Islands', 'AX', 'ALA', 248 ]
    ];

    var bod = $('#codes-body');

    function addRow(name, a2, a3, num) {
        bod.append('<tr>' +
                '<td>'+ name + '</td>' +
                '<td class="code">'+ a2 + '</td>' +
                '<td class="code">'+ a3 + '</td>' +
                '<td class="num">'+ num + '</td>' +
                '</tr>');
    }

    function loadRows() {
        data.forEach(function (d) {
            if (d.length) {
                addRow(d[0], d[1], d[2], d[3]);
            }
        });
    }

    loadRows();
</script>

</body>
</html>
