diff --git a/modules/context/org.go b/modules/context/org.go
index 835c76137..2d7cf5185 100644
--- a/modules/context/org.go
+++ b/modules/context/org.go
@@ -24,6 +24,7 @@ type Organization struct {
 	Organization     *organization.Organization
 	OrgLink          string
 	CanCreateOrgRepo bool
+	PublicMemberOnly bool // Only display public members
 
 	Team  *organization.Team
 	Teams []*organization.Team
@@ -172,6 +173,18 @@ func HandleOrgAssignment(ctx *Context, args ...bool) {
 	ctx.Org.OrgLink = org.AsUser().OrganisationLink()
 	ctx.Data["OrgLink"] = ctx.Org.OrgLink
 
+	// Member
+	ctx.Org.PublicMemberOnly = ctx.Doer == nil || !ctx.Org.IsMember && !ctx.Doer.IsAdmin
+	opts := &organization.FindOrgMembersOpts{
+		OrgID:      org.ID,
+		PublicOnly: ctx.Org.PublicMemberOnly,
+	}
+	ctx.Data["NumMembers"], err = organization.CountOrgMembers(opts)
+	if err != nil {
+		ctx.ServerError("CountOrgMembers", err)
+		return
+	}
+
 	// Team.
 	if ctx.Org.IsMember {
 		shouldSeeAllTeams := false
@@ -203,6 +216,7 @@ func HandleOrgAssignment(ctx *Context, args ...bool) {
 				return
 			}
 		}
+		ctx.Data["NumTeams"] = len(ctx.Org.Teams)
 	}
 
 	teamName := ctx.Params(":team")
diff --git a/routers/web/org/home.go b/routers/web/org/home.go
index 9104c15f9..613dff218 100644
--- a/routers/web/org/home.go
+++ b/routers/web/org/home.go
@@ -120,31 +120,15 @@ func Home(ctx *context.Context) {
 
 	opts := &organization.FindOrgMembersOpts{
 		OrgID:       org.ID,
-		PublicOnly:  true,
+		PublicOnly:  ctx.Org.PublicMemberOnly,
 		ListOptions: db.ListOptions{Page: 1, PageSize: 25},
 	}
-
-	if ctx.Doer != nil {
-		isMember, err := org.IsOrgMember(ctx.Doer.ID)
-		if err != nil {
-			ctx.Error(http.StatusInternalServerError, "IsOrgMember")
-			return
-		}
-		opts.PublicOnly = !isMember && !ctx.Doer.IsAdmin
-	}
-
 	members, _, err := organization.FindOrgMembers(opts)
 	if err != nil {
 		ctx.ServerError("FindOrgMembers", err)
 		return
 	}
 
-	membersCount, err := organization.CountOrgMembers(opts)
-	if err != nil {
-		ctx.ServerError("CountOrgMembers", err)
-		return
-	}
-
 	var isFollowing bool
 	if ctx.Doer != nil {
 		isFollowing = user_model.IsFollowing(ctx.Doer.ID, ctx.ContextUser.ID)
@@ -152,7 +136,6 @@ func Home(ctx *context.Context) {
 
 	ctx.Data["Repos"] = repos
 	ctx.Data["Total"] = count
-	ctx.Data["MembersTotal"] = membersCount
 	ctx.Data["Members"] = members
 	ctx.Data["Teams"] = ctx.Org.Teams
 	ctx.Data["DisableNewPullMirrors"] = setting.Mirror.DisableNewPull
@@ -171,5 +154,7 @@ func Home(ctx *context.Context) {
 	ctx.Data["Page"] = pager
 	ctx.Data["ContextUser"] = ctx.ContextUser
 
+	ctx.Data["ShowMemberAndTeamTab"] = ctx.Org.IsMember || len(members) > 0
+
 	ctx.HTML(http.StatusOK, tplOrgHome)
 }
diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl
index 766dd5b7a..0bd744d2b 100644
--- a/templates/org/home.tmpl
+++ b/templates/org/home.tmpl
@@ -37,12 +37,13 @@
 
 	<div class="ui container">
 		<div class="ui mobile reversed stackable grid">
-			<div class="ui eleven wide column">
+			<div class="ui {{if .ShowMemberAndTeamTab}}eleven wide{{end}} column">
 				{{template "explore/repo_search" .}}
 				{{template "explore/repo_list" .}}
 				{{template "base/paginate" .}}
 			</div>
 
+			{{if .ShowMemberAndTeamTab}}
 			<div class="ui five wide column">
 				{{if .CanCreateOrgRepo}}
 					<div class="center aligned">
@@ -53,19 +54,20 @@
 					</div>
 					<div class="divider"></div>
 				{{end}}
-				<h4 class="ui top attached header gt-df">
-					<strong class="gt-f1">{{.locale.Tr "org.members"}}</strong>
-					<a class="text grey gt-dif gt-ac" href="{{.OrgLink}}/members"><span>{{.MembersTotal}}</span> {{svg "octicon-chevron-right"}}</a>
-				</h4>
-				<div class="ui attached segment members">
-					{{$isMember := .IsOrganizationMember}}
-					{{range .Members}}
-						{{if or $isMember (call $.IsPublicMember .ID)}}
-							<a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}">{{ctx.AvatarUtils.Avatar . 48}}</a>
+				{{if .NumMembers}}
+					<h4 class="ui top attached header gt-df">
+						<strong class="gt-f1">{{.locale.Tr "org.members"}}</strong>
+						<a class="text grey gt-dif gt-ac" href="{{.OrgLink}}/members"><span>{{.NumMembers}}</span> {{svg "octicon-chevron-right"}}</a>
+					</h4>
+					<div class="ui attached segment members">
+						{{$isMember := .IsOrganizationMember}}
+						{{range .Members}}
+							{{if or $isMember (call $.IsPublicMember .ID)}}
+								<a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}">{{ctx.AvatarUtils.Avatar . 48}}</a>
+							{{end}}
 						{{end}}
-					{{end}}
-				</div>
-
+					</div>
+				{{end}}
 				{{if .IsOrganizationMember}}
 					<div class="ui top attached header gt-df">
 						<strong class="gt-f1">{{.locale.Tr "org.teams"}}</strong>
@@ -89,6 +91,7 @@
 					{{end}}
 				{{end}}
 			</div>
+			{{end}}
 		</div>
 	</div>
 </div>
diff --git a/templates/org/menu.tmpl b/templates/org/menu.tmpl
index a4f602730..26c9f980a 100644
--- a/templates/org/menu.tmpl
+++ b/templates/org/menu.tmpl
@@ -21,13 +21,13 @@
 			{{svg "octicon-code"}}&nbsp;{{$.locale.Tr "org.code"}}
 		</a>
 		{{end}}
-		{{if .IsOrganizationMember}}
+		{{if .NumMembers}}
 			<a class="{{if $.PageIsOrgMembers}}active {{end}}item" href="{{$.OrgLink}}/members">
 				{{svg "octicon-person"}}&nbsp;{{$.locale.Tr "org.members"}}
-				{{if .NumMembers}}
-					<div class="ui small label">{{.NumMembers}}</div>
-				{{end}}
+				<div class="ui small label">{{.NumMembers}}</div>
 			</a>
+		{{end}}
+		{{if .IsOrganizationMember}}
 			<a class="{{if $.PageIsOrgTeams}}active {{end}}item" href="{{$.OrgLink}}/teams">
 				{{svg "octicon-people"}}&nbsp;{{$.locale.Tr "org.teams"}}
 				{{if .NumTeams}}