diff --git a/app/converter/punycodedecoder.ts b/app/converter/punycodedecoder.ts
new file mode 100644
index 0000000..e61a8b4
--- /dev/null
+++ b/app/converter/punycodedecoder.ts
@@ -0,0 +1,20 @@
+import {Converter} from "./converter";
+import {NativeLibraryWrapperService} from "../nativelibrarywrapper.service";
+
+export class PunycodeDecoder implements Converter {
+
+    constructor(private nativeLibraryWrapperService: NativeLibraryWrapperService) {
+    }
+
+    getDisplayname(): string {
+        return "Decode from punycode";
+    }
+
+    getId(): string {
+        return "decodepunycode";
+    }
+
+    convert(input: string): string {
+        return this.nativeLibraryWrapperService.punycode.decode(input);
+    }
+}
diff --git a/app/converter/punycodeencoder.ts b/app/converter/punycodeencoder.ts
new file mode 100644
index 0000000..66345d6
--- /dev/null
+++ b/app/converter/punycodeencoder.ts
@@ -0,0 +1,20 @@
+import {Converter} from "./converter";
+import {NativeLibraryWrapperService} from "../nativelibrarywrapper.service";
+
+export class PunycodeEncoder implements Converter {
+
+    constructor(private nativeLibraryWrapperService: NativeLibraryWrapperService) {
+    }
+
+    getDisplayname(): string {
+        return "Encode as punycode";
+    }
+
+    getId(): string {
+        return "encodepunycode";
+    }
+
+    convert(input: string): string {
+        return this.nativeLibraryWrapperService.punycode.encode(input);
+    }
+}
diff --git a/app/converterregistry.service.ts b/app/converterregistry.service.ts
index 48817b7..af6e30b 100644
--- a/app/converterregistry.service.ts
+++ b/app/converterregistry.service.ts
@@ -15,6 +15,8 @@ import {BinToDecConverter} from "./converter/bintodecconverter";
 import {QuotedPrintableDecoder} from "./converter/quotedprintabledecoder";
 import {QuotedPrintableEncoder} from "./converter/quotedprintableencoder";
 import {NativeLibraryWrapperService} from "./nativelibrarywrapper.service";
+import {PunycodeEncoder} from "./converter/punycodeencoder";
+import {PunycodeDecoder} from "./converter/punycodedecoder";
 
 @Injectable()
 export class ConverterRegistryService {
@@ -52,6 +54,8 @@ export class ConverterRegistryService {
         this.registerConverter(new HexToDecConverter());
         this.registerConverter(new DecToBinConverter());
         this.registerConverter(new BinToDecConverter());
+        this.registerConverter(new PunycodeEncoder(this.wrapper));
+        this.registerConverter(new PunycodeDecoder(this.wrapper));
     }
 
     private registerConverter(converter:Converter):void {
diff --git a/app/nativelibrarywrapper.service.ts b/app/nativelibrarywrapper.service.ts
index 6a7d840..2a905b9 100644
--- a/app/nativelibrarywrapper.service.ts
+++ b/app/nativelibrarywrapper.service.ts
@@ -2,14 +2,17 @@ import {Injectable} from "@angular/core";
 
 declare var utf8:any;
 declare var quotedPrintable:any;
+declare var punycode:any;
 
 @Injectable()
 export class NativeLibraryWrapperService {
     public utf8:any;
     public quotedPrintable:any;
+    public punycode:any;
 
     constructor() {
         this.utf8 = utf8;
         this.quotedPrintable = quotedPrintable;
+        this.punycode = punycode;
     }
-}
\ No newline at end of file
+}
diff --git a/index.html b/index.html
index 0481aa4..f12af09 100644
--- a/index.html
+++ b/index.html
@@ -10,6 +10,7 @@
     <script type="text/javascript" src="node_modules/systemjs/dist/system.src.js"></script>
     <script type="text/javascript" src="node_modules/utf8/utf8.js"></script>
     <script type="text/javascript" src="node_modules/quoted-printable/quoted-printable.js"></script>
+    <script type="text/javascript" src="node_modules/punycode/punycode.js"></script>
 
     <script type="text/javascript" src="systemjs.config.js"></script>
     <script type="text/javascript">
diff --git a/package.json b/package.json
index 56a1dde..39d3c79 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,8 @@
     "systemjs": "^0.19.27",
     "zone.js": "^0.6.12",
     "quoted-printable": "^1.0.0",
-    "utf8": "^2.1.1"
+    "utf8": "^2.1.1",
+    "punycode": "1.4.1"
   },
   "devDependencies": {
     "concurrently": "^2.2.0",