--- a/libopkg/opkg_conf.c
+++ b/libopkg/opkg_conf.c
@@ -69,6 +69,7 @@ opkg_option_t options[] = {
 	  { "proxy_passwd", OPKG_OPT_TYPE_STRING, &_conf.proxy_passwd },
 	  { "proxy_user", OPKG_OPT_TYPE_STRING, &_conf.proxy_user },
 	  { "query-all", OPKG_OPT_TYPE_BOOL, &_conf.query_all },
+	  { "size", OPKG_OPT_TYPE_BOOL, &_conf.size },
 	  { "tmp_dir", OPKG_OPT_TYPE_STRING, &_conf.tmp_dir },
 	  { "verbosity", OPKG_OPT_TYPE_INT, &_conf.verbosity },
 #if defined(HAVE_OPENSSL)
--- a/libopkg/opkg_conf.h
+++ b/libopkg/opkg_conf.h
@@ -88,6 +88,7 @@ struct opkg_conf
      int query_all;
      int verbosity;
      int noaction;
+     int size;
      int download_only;
      char *cache;
 
--- a/src/opkg-cl.c
+++ b/src/opkg-cl.c
@@ -52,6 +52,7 @@ enum {
 	ARGS_OPT_AUTOREMOVE,
 	ARGS_OPT_CACHE,
 	ARGS_OPT_FORCE_SIGNATURE,
+	ARGS_OPT_SIZE,
 };
 
 static struct option long_options[] = {
@@ -98,6 +99,7 @@ static struct option long_options[] = {
 	{"offline-root", 1, 0, 'o'},
 	{"add-arch", 1, 0, ARGS_OPT_ADD_ARCH},
 	{"add-dest", 1, 0, ARGS_OPT_ADD_DEST},
+	{"size", 0, 0, ARGS_OPT_SIZE},
 	{"test", 0, 0, ARGS_OPT_NOACTION},
 	{"tmp-dir", 1, 0, 't'},
 	{"tmp_dir", 1, 0, 't'},
@@ -207,6 +209,9 @@ args_parse(int argc, char *argv[])
 			}
 			free(tuple);
 			break;
+		case ARGS_OPT_SIZE:
+			conf->size = 1;
+			break;
 		case ARGS_OPT_NOACTION:
 			conf->noaction = 1;
 			break;
@@ -310,6 +315,7 @@ usage()
 	printf("\t--download-only	No action -- download only\n");
 	printf("\t--nodeps		Do not follow dependencies\n");
 	printf("\t--nocase		Perform case insensitive pattern matching\n");
+	printf("\t--size			Print package size when listing available packages\n");
 	printf("\t--force-removal-of-dependent-packages\n");
 	printf("\t			Remove package and all dependencies\n");
 	printf("\t--autoremove		Remove packages that were installed\n");
--- a/libopkg/opkg_cmd.c
+++ b/libopkg/opkg_cmd.c
@@ -47,10 +47,12 @@ static void
 print_pkg(pkg_t *pkg)
 {
 	char *version = pkg_version_str_alloc(pkg);
+	printf("%s - %s", pkg->name, version);
+	if (conf->size)
+		printf(" - %lu", pkg->size);
 	if (pkg->description)
-		printf("%s - %s - %s\n", pkg->name, version, pkg->description);
-	else
-		printf("%s - %s\n", pkg->name, version);
+		printf(" - %s", pkg->description);
+	printf("\n");
 	free(version);
 }
 
