diff --git anon-upload-template.php anon-upload-template.php
old mode 100644
new mode 100755
index 68be0b8..af9ae0a
--- anon-upload-template.php
+++ anon-upload-template.php
@@ -126,9 +126,9 @@ function anon_upload_css() {
 		border-color: #bbb;
 	}
 
-		.video-upload-left #wptv_honey_container {
-			display: none;
-		}
+	.video-upload-left #wptv_honey_container {
+		display: none;
+	}
 
 	#video-upload-form p.last {
 		margin: 5px 80px 25px;
@@ -169,6 +169,10 @@ function anon_upload_css() {
 		display: inline;
 		width: auto;
 	}
+
+	#wptv_video_producer_username {
+		margin: 22px 0;
+	}
 	</style>
 	<?php
 }
@@ -179,7 +183,7 @@ get_header();
 
 $message = '';
 
-if ( !empty($_REQUEST['error']) ) {
+if ( !empty( $_REQUEST['error'] ) ) {
 	$message = (int) $_REQUEST['error'];
 
 	switch ( $message ) {
@@ -214,6 +218,9 @@ if ( !empty($_REQUEST['error']) ) {
 		case 13:
 			$message = "Error: please leave the first field empty. (It helps us know you're not a spammer.)";
 			break;
+		case 14:
+			$message = "Error: invalid WordPress.org username given for Producer.";
+			break;
 	}
 	$message = '<div class="error"><p>' . $message . '</p></div>';
 } elseif ( !empty($_REQUEST['success']) ) {
@@ -312,10 +319,9 @@ if ( !empty($_REQUEST['error']) ) {
 			?>
 		</ul>
 	</div>
-
 	<p>
-		<label for="wptv_video_producer"><?php esc_html_e( 'Video producer' ); ?></label>
-		<input type="text" id="wptv_video_producer" name="wptv_video_producer" value="" />
+		<label for="wptv_video_producer_username"><?php esc_html_e( 'Producer WordPress.org Username' ); ?></label>
+		<input type="text" id="wptv_video_producer_username" name="wptv_video_producer_username" value="" />
 	</p>
 	<p>
 		<label for="wptv_speakers"><?php esc_html_e( 'Speakers' ); ?></label>
diff --git functions.php functions.php
index 9f6d785..86abe50 100644
--- functions.php
+++ functions.php
@@ -164,6 +164,7 @@ class WordPressTV_Theme {
 		global $post;
 
 		$slides_url = get_post_meta( $post->ID, '_wptv_slides_url', true );
+		$producer_username = get_post_meta( $post->ID, '_wptv_producer_username', true );
 		wp_nonce_field( 'edit-video-info', 'video_info_metabox_nonce' );
 
 		?>
@@ -172,7 +173,10 @@ class WordPressTV_Theme {
 			<label for="wptv-slides-url">Slides URL</label>
 			<input type="text" class="widefat" id="wptv-slides-url" name="_wptv_slides_url" value="<?php echo esc_url( $slides_url ); ?>" />
 		</p>
-
+		<p>
+			<label for="wptv-producer-username">Video Producer WordPress.org Username</label>
+			<input type="text" class="widefat" id="wptv-producer-username" name="_wptv_producer_username" value="<?php echo sanitize_user( $producer_username, true ); ?>" />
+		</p>
 		<?php
 	}
 
@@ -198,6 +202,14 @@ class WordPressTV_Theme {
 		} else {
 			delete_post_meta( $post_id, '_wptv_slides_url' );
 		}
+
+		$producer_username = sanitize_user( $_POST['_wptv_producer_username'], true );
+
+		if ( $producer_username ) {
+			update_post_meta( $post_id, '_wptv_producer_username', $producer_username );
+		} else {
+			delete_post_meta( $post_id, '_wptv_producer_username' );
+		}
 	}
 
 	/**
@@ -829,3 +841,26 @@ function wptv_excerpt_slides( $excerpt ) {
 	return $excerpt;
 }
 add_filter( 'get_the_excerpt', 'wptv_excerpt_slides' );
+
+/**
+ * When given a string, returns boolean based on whether the string matches a valid w.org username
+ *
+ * @param $username
+ *
+ * @return bool
+ */
+function dotorg_username_exists( $username ) {
+	$args = array(
+		'redirection' => 0,
+	);
+	$url = 'https://wordpress.org/grav-redirect.php?user=' . $username;
+	$response = wp_remote_get( $url, $args );
+	$response = wp_remote_retrieve_headers( $response );
+
+	if ( validate_username( $username ) && array_key_exists( 'location', $response ) ) {
+		$result = ( ! strpos( $response['location'], 'd=mm' ) ) ? true : false;
+	} else {
+		$result = false;
+	}
+	return $result;
+}
\ No newline at end of file
diff --git plugins/wordpresstv-anon-upload/anon-upload.php plugins/wordpresstv-anon-upload/anon-upload.php
old mode 100644
new mode 100755
index 18bca59..c1df414
--- plugins/wordpresstv-anon-upload/anon-upload.php
+++ plugins/wordpresstv-anon-upload/anon-upload.php
@@ -47,7 +47,7 @@ class WPTV_Anon_Upload {
 	function validate() {
 		$text_fields = array(
 			'wptv_video_title',
-			'wptv_video_producer',
+			'wptv_video_producer_username',
 			'wptv_speakers',
 			'wptv_event',
 			'wptv_slides_url'
@@ -62,6 +62,10 @@ class WPTV_Anon_Upload {
 			return $this->error( 13 );
 		}
 
+		if ( isset ( $_POST['wptv_video_producer_username'] ) && dotorg_username_exists( $_POST['wptv_video_producer_username'] ) == false ) {
+			return $this->error( 14 );
+		}
+
 		if ( ! is_user_logged_in() ) {
 			if ( empty( $_POST['wptv_uploaded_by'] ) ) {
 				return $this->error( 10 );
@@ -186,23 +190,23 @@ class WPTV_Anon_Upload {
 
 		if ( ! empty( $name_parts['extension'] ) ) {
 			if ( ! in_array( strtolower( $name_parts['extension'] ), array(
-					'avi',
-					'mov',
-					'qt',
-					'mpeg',
-					'mpg',
-					'mpe',
-					'mp4',
-					'm4v',
-					'asf',
-					'asx',
-					'wax',
-					'wmv',
-					'wmx',
-					'ogv',
-					'3gp',
-					'3g2',
-				), true )
+				'avi',
+				'mov',
+				'qt',
+				'mpeg',
+				'mpg',
+				'mpe',
+				'mp4',
+				'm4v',
+				'asf',
+				'asx',
+				'wax',
+				'wmv',
+				'wmx',
+				'ogv',
+				'3gp',
+				'3g2',
+			), true )
 			) {
 				return $this->error( 2 );
 			}
@@ -229,8 +233,7 @@ class WPTV_Anon_Upload {
 		// Add default cat according to the "This is a WC video" checkbox
 		if ( ! empty( $_posted['wptv_video_wordcamp'] ) ) {
 			$anon_post['post_category'] = array( '12784353' ); // add the "WordCampTV" category
-		}
-		else {
+		} else {
 			$anon_post['post_category'] = array( '1' ); // Uncategorized
 		}
 
@@ -269,14 +272,14 @@ class WPTV_Anon_Upload {
 			$anon_author_email = $this->sanitize_text( $_posted['wptv_email'] );
 		}
 
-		$video_title    = $this->sanitize_text( $_posted['wptv_video_title'] );
-		$video_producer = $this->sanitize_text( $_posted['wptv_video_producer'] );
-		$speakers       = $this->sanitize_text( $_posted['wptv_speakers'] );
-		$event          = $this->sanitize_text( $_posted['wptv_event'] );
-		$description    = $this->sanitize_text( $_posted['wptv_video_description'], false );
-		$language       = $this->sanitize_text( $_posted['wptv_language'] );
-		$slides         = $this->sanitize_text( $_posted['wptv_slides_url'] );
-		$ip             = $_SERVER['REMOTE_ADDR'];
+		$video_title             = $this->sanitize_text( $_posted['wptv_video_title'] );
+		$video_producer_username = $this->sanitize_text( $_posted['wptv_video_producer_username'] );
+		$speakers                = $this->sanitize_text( $_posted['wptv_speakers'] );
+		$event                   = $this->sanitize_text( $_posted['wptv_event'] );
+		$description             = $this->sanitize_text( $_posted['wptv_video_description'], false );
+		$language                = $this->sanitize_text( $_posted['wptv_language'] );
+		$slides                  = $this->sanitize_text( $_posted['wptv_slides_url'] );
+		$ip                      = $_SERVER['REMOTE_ADDR'];
 
 		$categories = '';
 		if ( ! empty( $_posted['post_category'] ) && is_array( $_posted['post_category'] ) ) {
@@ -289,18 +292,18 @@ class WPTV_Anon_Upload {
 		}
 
 		$post_meta = array(
-			'attachment_id'   => $attachment_id,
-			'submitted_by'    => $anon_author,
-			'submitted_email' => $anon_author_email,
-			'title'           => $video_title,
-			'producer'        => $video_producer,
-			'speakers'        => $speakers,
-			'event'           => $event,
-			'language'        => $language,
-			'categories'      => $categories,
-			'description'     => $description,
-			'slides'          => $slides,
-			'ip'              => $ip,
+			'attachment_id'     => $attachment_id,
+			'submitted_by'      => $anon_author,
+			'submitted_email'   => $anon_author_email,
+			'title'             => $video_title,
+			'producer_username' => $video_producer_username,
+			'speakers'          => $speakers,
+			'event'             => $event,
+			'language'          => $language,
+			'categories'        => $categories,
+			'description'       => $description,
+			'slides'            => $slides,
+			'ip'                => $ip,
 		);
 
 		$post_meta['video_guid'] = $video_data->guid;
@@ -327,7 +330,7 @@ class WPTV_Anon_Upload {
 
 		$attachment_post = get_post( $meta['attachment_id'] );
 
-		$embed_args = array(
+		$embed_args            = array(
 			'format'  => 'fmt_std',
 			'width'   => 600,
 			'context' => 'admin',
@@ -335,9 +338,15 @@ class WPTV_Anon_Upload {
 		$embed_args['blog_id'] = get_current_blog_id();
 		$embed_args['post_id'] = $meta['attachment_id'];
 
-		// Add slides index to meta (necessary for posts that were uploaded before the field was added)
-		if ( ! array_key_exists( 'slides', $meta ) ) {
-			$meta['slides'] = '';
+		// Add missing indexes to meta (necessary for posts that were uploaded before the fields were added)
+		$new_fields = array(
+			'slides',
+			'producer_username',
+		);
+		foreach ( $new_fields as $field ) {
+			if ( ! array_key_exists( $field, $meta ) ) {
+				$meta[$field] = '';
+			}
 		}
 
 		?>
@@ -401,9 +410,9 @@ class WPTV_Anon_Upload {
 					<tr>
 						<td>
 							<?php
-								if ( function_exists( 'video_embed' ) ) {
-									echo video_embed( $embed_args );
-								}
+							if ( function_exists( 'video_embed' ) ) {
+								echo video_embed( $embed_args );
+							}
 							?>
 						</td>
 					</tr>
@@ -412,13 +421,16 @@ class WPTV_Anon_Upload {
 				<div class="anon-data">
 					<div class="row">
 						<p class="label">Submitted by:<br></p>
+
 						<p class="data">
-							<input type="text" readonly="readonly" value="<?php echo esc_attr( $meta['submitted_by'] ); ?>"/>
+							<input type="text" readonly="readonly"
+							       value="<?php echo esc_attr( $meta['submitted_by'] ); ?>"/>
 						</p>
 					</div>
 
 					<div class="row">
 						<p class="label">Email:</p>
+
 						<p class="data">
 							<a href="mailto:<?php echo esc_attr( $meta['submitted_email'] ); ?>?Subject=Your%20WordPress.tv%20submission"><?php echo esc_html( $meta['submitted_email'] ); ?></a>
 						</p>
@@ -426,13 +438,17 @@ class WPTV_Anon_Upload {
 
 					<div class="row">
 						<p class="label">IP Address:</p>
+
 						<p class="data">
-							<a href="<?php echo esc_url( add_query_arg( array( 'query' => $meta['ip'] ), 'http://en.utrace.de' ) ); ?>" target="_blank"><?php echo esc_html( $meta['ip'] ); ?></a> (opens in new tab, shows location of the IP)
+							<a href="<?php echo esc_url( add_query_arg( array( 'query' => $meta['ip'] ), 'http://en.utrace.de' ) ); ?>"
+							   target="_blank"><?php echo esc_html( $meta['ip'] ); ?></a> (opens in new tab, shows
+							location of the IP)
 						</p>
 					</div>
 
 					<div class="row">
 						<p class="label">Title:</p>
+
 						<p class="data">
 							<input type="text" value="<?php echo esc_attr( $meta['title'] ); ?>"/>
 							<a class="button-secondary anon-approve" href="#title">Approve</a>
@@ -441,6 +457,7 @@ class WPTV_Anon_Upload {
 
 					<div class="row">
 						<p class="label">Language:</p>
+
 						<p class="data">
 							<input type="text" value="<?php echo esc_attr( $meta['language'] ); ?>"/>
 							<a class="button-secondary anon-approve" href="#new-tag-language">Approve</a>
@@ -449,21 +466,23 @@ class WPTV_Anon_Upload {
 
 					<div class="row">
 						<p class="label">Categories:</p>
+
 						<p class="data" id="anon-approve-cats">
 							<?php
-								$cats = preg_replace( '/[^0-9,]+/', '', trim( $meta['categories'], ' ,' ) );
-								$cats = explode( ',', $cats );
-								foreach ( $cats as $cat ) {
-									if ( intval( $cat ) ) {
-										echo '<a href="#in-category-' . $cat . '" class="anon-cat-link" title="Click to approve">Unknown?</a>, ';
-									}
+							$cats = preg_replace( '/[^0-9,]+/', '', trim( $meta['categories'], ' ,' ) );
+							$cats = explode( ',', $cats );
+							foreach ( $cats as $cat ) {
+								if ( intval( $cat ) ) {
+									echo '<a href="#in-category-' . $cat . '" class="anon-cat-link" title="Click to approve">Unknown?</a>, ';
 								}
+							}
 							?>
 						</p>
 					</div>
 
 					<div class="row">
 						<p class="label">Event:</p>
+
 						<p class="data">
 							<input type="text" value="<?php echo esc_attr( $meta['event'] ); ?>"/>
 							<a class="button-secondary anon-approve" href="#new-tag-event">Approve</a>
@@ -471,15 +490,17 @@ class WPTV_Anon_Upload {
 					</div>
 
 					<div class="row">
-						<p class="label">Producer:</p>
+						<p class="label">Producer w.org Username:</p>
+
 						<p class="data">
-							<input type="text" value="<?php echo esc_attr( $meta['producer'] ); ?>"/>
-							<a class="button-secondary anon-approve" href="#new-tag-producer">Approve</a>
+							<input type="text" value="<?php echo esc_attr( $meta['producer_username'] ); ?>"/>
+							<a class="button-secondary anon-approve" href="#wptv-producer-username">Approve</a>
 						</p>
 					</div>
 
 					<div class="row">
 						<p class="label">Speakers:</p>
+
 						<p class="data">
 							<input type="text" value="<?php echo esc_attr( $meta['speakers'] ); ?>"/>
 							<a class="button-secondary anon-approve" href="#new-tag-speakers">Approve</a>
@@ -488,6 +509,7 @@ class WPTV_Anon_Upload {
 
 					<div class="row txtarea">
 						<p class="label">Description:</p>
+
 						<p class="data">
 							<textarea rows="10"><?php echo esc_html( $meta['description'] ); ?></textarea>
 							<a class="button-secondary anon-approve" href="#excerpt">Approve</a>
@@ -496,6 +518,7 @@ class WPTV_Anon_Upload {
 
 					<div class="row">
 						<p class="label">Slides:</p>
+
 						<p class="data">
 							<input type="text" value="<?php echo esc_attr( $meta['slides'] ); ?>"/>
 							<a class="button-secondary anon-approve" href="#wptv-slides-url">Approve</a>
@@ -504,8 +527,10 @@ class WPTV_Anon_Upload {
 
 					<div class="row">
 						<p class="label">Edit attachment:</p>
+
 						<p class="data">
-							<a href="<?php echo esc_url( get_edit_post_link( $meta['attachment_id'] ) ); ?>" target="_blank"><?php echo esc_html( $attachment_post->post_title ); ?></a>
+							<a href="<?php echo esc_url( get_edit_post_link( $meta['attachment_id'] ) ); ?>"
+							   target="_blank"><?php echo esc_html( $attachment_post->post_title ); ?></a>
 						</p>
 					</div>
 				</div>
@@ -539,7 +564,9 @@ class WPTV_Anon_Upload {
 						if (id.indexOf('#new-tag-') != -1) {
 							el.val(target.siblings('input[type="text"]').val());
 							el.siblings('.tagadd').click();
-						} else if ('#title' == id  || '#wptv-slides-url' == id) {
+						} else if ('#title' == id || '#wptv-producer-username' == id) {
+							el.val(target.siblings('input[type="text"]').val());
+						} else if ('#title' == id || '#wptv-slides-url' == id) {
 							el.val(target.siblings('input[type="text"]').val());
 						} else if (id == '#excerpt') {
 							el.val(target.siblings('textarea').val());
diff --git sidebar-single.php sidebar-single.php
old mode 100644
new mode 100755
index 84a2fe6..14527a9
--- sidebar-single.php
+++ sidebar-single.php
@@ -81,5 +81,16 @@
 						printf( '<a href="%s">Subtitle this video &rarr;</a>', esc_url( add_query_arg( 'video', $video->post_id, home_url( 'subtitle/' ) ) ) );
 					}
 				}
-			?>
+
+			// Credit video producer with link to their w.org profile
+			$producer_username = get_post_meta( get_the_ID(), '_wptv_producer_username', true );
+			$producer_name = ( get_the_terms( get_the_ID(), 'producer' ) ) ? get_the_terms( get_the_ID(), 'producer' )[0]->name : $producer_username;
+
+			if ( $producer_username ) { ?>
+				<h5>Producer</h5>
+				<div class="video-producer">
+					<a href="http://profiles.wordpress.org/<?php esc_attr_e( $producer_username ); ?>"><?php esc_attr_e( $producer_name ); ?></a>
+				</div>
+			<?php } ?>
+
 </div><!-- .secondary-content -->
